RIA上でのmailsend関数の実行場所は?
皆さんこんにちはTOP@川島です。
この度RIAアプリケーションを構築中なのですがこの中の処理でサーバ上に作成したCSVをメールにて送信を行う処理があります。
メール送信のタスクは「リッチクライアント」を利用しているのですがこの場合、
送信処理自体はクライアントなのかサーバ上がどちらなのでしょうか?
よろしくお願いいたします。
ちなみにクライアント上のファイルを添付しようとしていたのですがこれが原因でエラーとなってしまいました。
-
MailSend関数は、ヘルプの「ホーム > リファレンスガイド > Web 開発 > リッチクライアントアプリケーション > リッチクライアント関数 > サーバ側で処理される関数」にありますので、サーバ処理になります。
-
AIS川島さん、
nagaiさんが言われるように、RIAで使用する関数は次のように分類されています。
1. サーバ側で処理される関数
2. クライアント側で処理される関数
3. サーバ/クライアント側の両方で処理可能な関数で、ヘルプを見ますと、MailSend()関数は「サーバ側で処理される関数」の分類に入っていますので、送信処理もサーバ側で実行されることになりますね。
ちなみに、添付するファイルがサーバ上にある場合はそのままパス指定してやればいいですが、添付ファイルがクライアント側にある場合は、ClientFileToServer()関数を使って、ファイルをサーバにアップロードしてやるといいですね。
-
TOP@川島です。
ご回答のほどありがとうございました。
資料を確認しました。やはりそうでしたか。といことはサーバ上にSTMPポートを許可する必要があるということですね。
ありがとうございました。
-
川島さんへ
サーバー側で難しい場合は、非インタラクティブRIAを使って、.netを利用して送信する方法もあります。
うちで成功してるんで、教えること出来ますよ。
必要なら言ってください。
-
AIS川島さん、
SMTPとMagicのRIAサーバが同じマシンで動いているのでしたら、ローカルループバックでアクセスできますので、ポートの解放は不要だと思いますよ。
例:localhostや127.0.0.1を使用してのアクセス
SMTPとMagicのRIAサーバが別々のマシンで動いている場合は、ポートの解放が必要になります。
-
水野雅仁様
よろしければ.netを利用して送信する方法を教えて頂けるとありがたいのですが。
よろしくお願いいたします。 -
Microsoft Copilotに質問したら以下となりました。
未経験ですがチャレンジしてみます。 -
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 InitializeSystem.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);//SSLsmtp.EnableSsl = true;System.Net.Mail.MailMessage oMsg = new System.Net.Mail.MailMessage(fromEMail, toEMail, subject, body);//メール送信smtp.Send(oMsg);}} -
水野です。
これでやると、office365 などだと、TLSのバージョンで動かない可能性があります。
うちのプロジェクトからメールの項目のみ書き出したプロジェクトを送付します。
この手法がTLSの最新に対応したMSの公式の手法です。
作りです。
宛先、cc,bccはセミコロンで区切ることで複数アドレスに対応してます。
添付ファイルはカンマで区切ることで複数ファイル対応してます。
sslは0がなし、1がStartls、2がSSLです
ちなみに、office365の場合は、smtp.office365.com 587 Startlsです。
よろしくお願いします。
-
水野様、お世話になっております。
メール送信のプロジェクトを開示してくださり誠にありがとうございます。
外部コール .NET なのでuniPaaS V1 Plusでは再現不可、xpa2以上なら再現可能と理解しました。
メール送信を今から試してみたいと思います。 -
1つ忘れてました。
DLLフォルダの中身をコンポーネントに設定してます。
コンポーネントリポジトリの各dLLのところで、右クリックしていただき
dllを置いてあるフォルダパスに書き換えていただければ動くと思います。
UNIPASSでやりたい場合は、.EXEや.DLLにしてやる必要があります。
今は、UNIPASS自体がサポート対象外なんで、考えてもいませんでした。。
-
以下のようになりましたので

以下のフォルダを作ってみました。
-
水野様 朝早くから早速返信ありがとうございます。
行き違いで今朝の水野様の返信を今目にしました。 -
途中経過報告で申し訳ありませんが、4Plusの体験版モードで実験していた為、
コンポーネント3つのうち
BouncyCastle.Cryptoと
MailKitは読み込んでいるけど
MimeKitは読み込んでいないと思われます。 -
import Mimekitしてるはずです。
これがないと、添付ファイルができないので、必ず読み込みするタイミングあります。
-
ごめんなさい。mimekitの仕様が変わったようです。
もう1個DLLがいるようなので、今から再度UPします。
-
以下が解消されないところです。
何かおわかりであればご教示ください。
よろしくお願いいたします。
-
申し訳ありませんでした。
コンポーネントの設定もそのままいけるように修正しました。
-
水野様 お世話になります。
再UPして頂いた分で、コンポーネントエラーは出なくなりました。
以下のようにオンラインタスクに変更した分で実験してみます。
今の所、まだエラーになります。
試してみます。教えて頂き誠にありがとうございました。
-
さくらインターネットですかね?
そうすると、587、Startlsだと思うので、SSL・TLSが1じゃないかなっておもいます
-
水野様、ありがとうございます。
そうですね。先程の実験はさくらインターネットえす。
弊社メール請求書送信をMagicのMailsendで実行しているお客様は
さくらインターネット1社
plala1社
ocn4社
lolipop1社ですね。MagicのMailSendの時はサーバーアドレスに
xxx.sakura.ne.jp:587とか
smtp.ocn.ne.jp:587
sesure.plala.ocn.ne.jp:587をサーバーアドレスに指定しています。 -
発信元をさくらインターネットやocnを試しておりますがP.returnに9が返ってきます。
Magicの場合、MailConnectを行ってからMailSendをしておりますがその必要はないでしょうか? -
必要ないです。
OCNでも成功してる実績はありますので、問題ないはずです。
ちょっと外出先なので、戻り次第会社のさくらのアカウントでやってみます。
-
水野様、返信ありがとうございます。
ネットで検索したらocn smtpは、ポート465という記事も出てきましたので
587だけではなく465も試しているところです。
-
さくらインターネット調べました。
たぶんOCNなども同じだと思いますが、587ポートの場合はStartls、465ポートの場合はSSLです。
それでこちらでは問題なく送信できました。
よろしくお願いします。
-
調査と実験をして頂きましてありがとうございました。
当方Windows 10 Pro
xpa 4.10b PT1 で試しております。
以下のバージョン等関係ありますでしょうか?
-
コンポーネントも×は出ておりませんでした。
それと1回目頂いたプロジェクトで作成したプログラムをリポジトリ出力し
2回目頂いた分でリポジトリ入力して実験しましたので、
それを止めて2回目頂いた分を用いて再度試してみます。 -
Magicから動かしてるので、関係ないと.netのバージョンは4.5.2とかであれば問題ないと思ってます。
こちらは4.10で試してますが、パッチは関係ないかなと。あるとすれば、socket通信になるはずなので、ファイアウォール、ウィルスソフト、メールサーバの認証エラーだとおもいます。
-
ありがとうございます。
最初の実験では、頂いたPG#3 RB_MailSendをオンラインタスクにして
F7キーを押したら、以下が実行されるようにしておりました。
PG#3 は非インタラクティブRIAで
PG#2 はバッチタスクなのを今気づいたので、
PG#2 を最初から使うようにしても良かったですね。
失礼しました。 -
すみません。説明不足でした。
そうなんです。C/S、RIAでサーバーで動かす場合はバッチ、
RIAでどうしてもポートの都合上ローカルで処置する場合のために、非インタラクティブRIAを
つくってあります。
コンポーネントで読み込むとどこでも使えるイメージで考えて出してあります。
サインインしてコメントを残してください。
コメント
35件のコメント