メインコンテンツへスキップ

RIA上でのmailsend関数の実行場所は?

コメント

35件のコメント

  • nagai

    MailSend関数は、ヘルプの「ホーム > リファレンスガイド > Web 開発 > リッチクライアントアプリケーション > リッチクライアント関数 > サーバ側で処理される関数」にありますので、サーバ処理になります。

  • Tanda

    AIS川島さん、

    nagaiさんが言われるように、RIAで使用する関数は次のように分類されています。

    1. サーバ側で処理される関数
    2. クライアント側で処理される関数
    3. サーバ/クライアント側の両方で処理可能な関数

    で、ヘルプを見ますと、MailSend()関数は「サーバ側で処理される関数」の分類に入っていますので、送信処理もサーバ側で実行されることになりますね。

    ちなみに、添付するファイルがサーバ上にある場合はそのままパス指定してやればいいですが、添付ファイルがクライアント側にある場合は、ClientFileToServer()関数を使って、ファイルをサーバにアップロードしてやるといいですね。

  • AIS川島

    TOP@川島です。 

    ご回答のほどありがとうございました。

    資料を確認しました。やはりそうでしたか。といことはサーバ上にSTMPポートを許可する必要があるということですね。

    ありがとうございました。

  • 水野雅仁

    川島さんへ

    サーバー側で難しい場合は、非インタラクティブRIAを使って、.netを利用して送信する方法もあります。

    うちで成功してるんで、教えること出来ますよ。

    必要なら言ってください。

     

  • Tanda

    AIS川島さん、

    SMTPとMagicのRIAサーバが同じマシンで動いているのでしたら、ローカルループバックでアクセスできますので、ポートの解放は不要だと思いますよ。

    例:localhostや127.0.0.1を使用してのアクセス

    SMTPとMagicのRIAサーバが別々のマシンで動いている場合は、ポートの解放が必要になります。

  • nkmt

    水野雅仁様
    よろしければ.netを利用して送信する方法を教えて頂けるとありがたいのですが。
    よろしくお願いいたします。

  • nkmt

    Microsoft Copilotに質問したら以下となりました。
    未経験ですがチャレンジしてみます。

  • Pu

    nkmtさんこんにちはPuです。
    最近はpythonを使う事が多いのでほとんどpythonで記述していますが
    以前MagicからC#でGmail経由で送信した時のMagicXPAでのコードを参考までに

    using System;
     
    public static class Snippet
    {
    public static void func()
    {
    //idとパスワード
            string id = "pu@3plus-sd.com";
            string pass = "hogehoge";
            string fromEMail = "pu@3plus-sd.com";
            string toEMail = "info@3plus-sd.com";
     
            //本文とタイトル
    string subject = ".netテスト";
    //本文
    string body = "イスラエルは大丈夫なんだろうか\r\n\r\n心配だ。";
            
            //GMail Initialize
            System.Net.Mail.SmtpClient smtp = new System.Net.Mail.SmtpClient();
            smtp.Host = "smtp.gmail.com";
            smtp.Port = 587;
     
            //GMail認証
            smtp.Credentials = new System.Net.NetworkCredential(id, pass);
     
            //SSL
            smtp.EnableSsl = true;
     
            System.Net.Mail.MailMessage oMsg = new System.Net.Mail.MailMessage(fromEMail, toEMail, subject, body);
     
            //メール送信
            smtp.Send(oMsg);
     
     
    }
     
    }

     

  • 水野雅仁

    水野です。

    これでやると、office365 などだと、TLSのバージョンで動かない可能性があります。

    うちのプロジェクトからメールの項目のみ書き出したプロジェクトを送付します。

    https://www.dropbox.com/scl/fi/jd1ku69a2zrccuyggg59s/COMMON_PROJECT.zip?rlkey=uthqykdon4smse4eicykr9826&dl=0

    この手法がTLSの最新に対応したMSの公式の手法です。

    作りです。

    宛先、cc,bccはセミコロンで区切ることで複数アドレスに対応してます。

    添付ファイルはカンマで区切ることで複数ファイル対応してます。

    sslは0がなし、1がStartls、2がSSLです

     

    ちなみに、office365の場合は、smtp.office365.com 587 Startlsです。

     

    よろしくお願いします。

     

     

     

     

     

  • nkmt

    水野様、お世話になっております。
    メール送信のプロジェクトを開示してくださり誠にありがとうございます。
    外部コール .NET なのでuniPaaS V1 Plusでは再現不可、xpa2以上なら再現可能と理解しました。
    メール送信を今から試してみたいと思います。

  • 水野雅仁

    1つ忘れてました。

    DLLフォルダの中身をコンポーネントに設定してます。

    コンポーネントリポジトリの各dLLのところで、右クリックしていただき

    dllを置いてあるフォルダパスに書き換えていただければ動くと思います。

     

    UNIPASSでやりたい場合は、.EXEや.DLLにしてやる必要があります。

    今は、UNIPASS自体がサポート対象外なんで、考えてもいませんでした。。

     

  • nkmt

    以下のようになりましたので

    以下のフォルダを作ってみました。

  • nkmt

    水野様 朝早くから早速返信ありがとうございます。
    行き違いで今朝の水野様の返信を今目にしました。

  • nkmt

    途中経過報告で申し訳ありませんが、4Plusの体験版モードで実験していた為、
    コンポーネント3つのうち
    BouncyCastle.Cryptoと
    MailKitは読み込んでいるけど
    MimeKitは読み込んでいないと思われます。

  • 水野雅仁

    import Mimekitしてるはずです。

    これがないと、添付ファイルができないので、必ず読み込みするタイミングあります。

     

  • 水野雅仁

    ごめんなさい。mimekitの仕様が変わったようです。

    もう1個DLLがいるようなので、今から再度UPします。

  • nkmt

    以下が解消されないところです。
    何かおわかりであればご教示ください。
    よろしくお願いいたします。

  • 水野雅仁

    申し訳ありませんでした。

    コンポーネントの設定もそのままいけるように修正しました。

    https://www.dropbox.com/scl/fi/jd1ku69a2zrccuyggg59s/COMMON_PROJECT.zip?rlkey=uthqykdon4smse4eicykr9826&dl=0

  • nkmt

    水野様 お世話になります。
    再UPして頂いた分で、コンポーネントエラーは出なくなりました。
    以下のようにオンラインタスクに変更した分で実験してみます。
    今の所、まだエラーになります。
    試してみます。教えて頂き誠にありがとうございました。

  • 水野雅仁

    さくらインターネットですかね?

    そうすると、587、Startlsだと思うので、SSL・TLSが1じゃないかなっておもいます

  • nkmt

    水野様、ありがとうございます。
    そうですね。先程の実験はさくらインターネットえす。
    弊社メール請求書送信をMagicのMailsendで実行しているお客様は
    さくらインターネット1社
    plala1社
    ocn4社
    lolipop1社ですね。

    MagicのMailSendの時はサーバーアドレスに
    xxx.sakura.ne.jp:587とか
    smtp.ocn.ne.jp:587
    sesure.plala.ocn.ne.jp:587をサーバーアドレスに指定しています。

  • nkmt

    発信元をさくらインターネットやocnを試しておりますがP.returnに9が返ってきます。
    Magicの場合、MailConnectを行ってからMailSendをしておりますがその必要はないでしょうか?

  • 水野雅仁

    必要ないです。

    OCNでも成功してる実績はありますので、問題ないはずです。

    ちょっと外出先なので、戻り次第会社のさくらのアカウントでやってみます。

  • nkmt

    水野様、返信ありがとうございます。
    ネットで検索したらocn smtpは、ポート465という記事も出てきましたので
    587だけではなく465も試しているところです。

  • 水野雅仁

    さくらインターネット調べました。

    たぶんOCNなども同じだと思いますが、587ポートの場合はStartls、465ポートの場合はSSLです。

    それでこちらでは問題なく送信できました。

    よろしくお願いします。

  • nkmt

    調査と実験をして頂きましてありがとうございました。
    当方Windows 10 Pro
    xpa 4.10b PT1 で試しております。
    以下のバージョン等関係ありますでしょうか?

  • nkmt

    コンポーネントも×は出ておりませんでした。
    それと1回目頂いたプロジェクトで作成したプログラムをリポジトリ出力し
    2回目頂いた分でリポジトリ入力して実験しましたので、
    それを止めて2回目頂いた分を用いて再度試してみます。

  • 水野雅仁

    Magicから動かしてるので、関係ないと.netのバージョンは4.5.2とかであれば問題ないと思ってます。
    こちらは4.10で試してますが、パッチは関係ないかなと。

    あるとすれば、socket通信になるはずなので、ファイアウォール、ウィルスソフト、メールサーバの認証エラーだとおもいます。

  • nkmt

    ありがとうございます。
    最初の実験では、頂いたPG#3 RB_MailSendをオンラインタスクにして
    F7キーを押したら、以下が実行されるようにしておりました。

    PG#3 は非インタラクティブRIAで
    PG#2 はバッチタスクなのを今気づいたので、
    PG#2 を最初から使うようにしても良かったですね。
    失礼しました。

  • 水野雅仁

    すみません。説明不足でした。

    そうなんです。C/S、RIAでサーバーで動かす場合はバッチ、

    RIAでどうしてもポートの都合上ローカルで処置する場合のために、非インタラクティブRIAを

    つくってあります。

    コンポーネントで読み込むとどこでも使えるイメージで考えて出してあります。

サインインしてコメントを残してください。