RECOMMEND
C# 言語リファレンス Black Book
C# 言語リファレンス Black Book (JUGEMレビュー »)
ビル ワグナー, Bill Wagner, スリーエーシステムズ, アクロバイト
RECOMMEND
RECOMMEND
SELECTED ENTRIES
CATEGORIES
ARCHIVES
MOBILE
qrcode
LINKS
PROFILE
OTHERS

06
--
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
--
>>
<<
--

メール

主に、メール送受信ライブラリを紹介します。各種ソフトウェア、PHPコンテンツ制作、SEO対策もお任せください。
【質問】SMTP/POP over SSLに対応していますか?
0
    Exwarp MailKit はSSLやTLS通信には対応しておりません。暗号化通信が必須のアプリケーションには使用できませんので予めご了承くださいませ。
    | information | 00:37 | - | - | - | - |
    絵文字付のメールを作成する
    0

      ExwarpMailKit1.0.438.*以降のライブラリ+Exwarp.Module.EmojiModuleを利用すると、絵文字を簡単に作成することができます。


      最新版をダウンロードしてください。


      [C#]
      Exwarp.Net.RFC.MIME.MIMETransform.RawEncoding = true; //(0)

      Exwarp.Net.Mail.MailMessage mail = new Exwarp.Net.Mail.MailMessage(System.Text.Encoding.ASCII); //(1)

      Exwarp.Module.ModuleLoader ml = new Exwarp.Module.ModuleLoader(mail); //(2)
      ml.LoadModule("Exwarp.Module.EmojiModule.dll"); //(3)

      mail.To = "mail_to@docomo.ne.jp"; //(4)
      mail.From = "mail_from@myhost.com";

      mail.RunCommand("Emoji_SetSubject","<emoji:1>絵文字メール"); //(5)
      mail.RunCommand("Emoji_SetBody","<emoji:100>絵文字本文"); //(6)

      Exwarp.Net.Smtp.SmtpClient client = new Exwarp.Net.Smtp.SmtpClient("HOST_NAME");
      if(client.Connect())
      {
        client.SendReceive(mail);
        client.Close();
      }

      [VB.NET]
      Exwarp.Net.RFC.MIME.MIMETransform.RawEncoding = True '(0)

      Dim mail As New Exwarp.Net.Mail.MailMessage(System.Text.Encoding.ASCII) '(1)

      Dim ml As New Exwarp.Module.ModuleLoader(mail) '(2)
      ml.LoadModule("Exwarp.Module.EmojiModule.dll") '(3)

      mail.To = "mail_to@docomo.ne.jp" '(4)
      mail.From = "mail_from@myhost.com"

      mail.RunCommand("Emoji_SetSubject","<emoji:1>絵文字メール") '(5)
      mail.RunCommand("Emoji_SetBody","<emoji:100>絵文字本文") '(6)
      Dim client As New Exwarp.Net.Smtp.SmtpClient("HOST_NAME")
      If client.Connect() Then
        client.SendReceive(mail)
        client.Close()
      End If

      [解説]
      (0)Exwarp.Net.RFC.MIME.MIMETransformのRawEncodingプロパティにTrueをセットします。
      これは、1.0.438より前のバージョンでau携帯への絵文字付の件名が表示されないバグに対処するために必要です。

      (1)Exwarp.Net.Mail.MailMessageのインスタンスを作成します。このときのエンコーディングは何でもOKです。

      (2)Exwarp.Module.ModuleLoaderのインスタンスを作成します。このときパラメータにモジュールを追加したいMailMessageインスタンスを渡します。

      (3)LoadModuleメソッドを呼び出して、モジュールをロードします。
      モジュールdllへのパスを表す文字列をセットします。実行ファイルと同じディレクトリにコピーしておくとファイル名だけで済むのでお勧めです。(別にモジュールの位置はどこでも構いません。参照を追加しておく必要もありません。)

      (4)必ず最初にMailMessageToプロパティをセットしておきます。この値を元に絵文字データが変換されます。

      (5)モジュールをロードするとEmoji_SetSubjectカスタムオペレーションが実行できるようになります。通常の文字列の任意の場所に<emoji:***>と記述すると内部でバイナリに自動変換します。(***の部分はdocomoの絵文字番号を入力します。)

      (6)(5)と同じ要領でEmoji_SetBodyカスタムオペレーションを実行します。絵文字の挿入方法は同じです。

      あとは通常のメール送信を行います。特別な操作は必要ありません。


      追加事項

      Emoji_SetSubjectおよびEmoji_SetBodyカスタムオペレーションに2番目の引数をセットすることができます。これは任意の絵文字変換テーブルファイルへのパスを表す文字列です。
      mail.RunCommand("Emoji_SetBody","<emoji:1>","MyEmojiTable.txt")

      上の様に記述すると、デフォルトの変換テーブルではなく、自由にカスタマイズした変換テーブルを使って絵文字の変換が行われます。
      デフォルトの変換テーブルは、こちらからダウンロードできます。
      絵文字コードは必ず半角大文字の英数4桁タブ区切りで記述します。
      docomo,softbankは必ずShift-JISバイナリ用コード、auはEメール送出用JISコードに対応したShift-JISコードを記述します。
      176以上の番号を設定することも可能ですが、上限は999です。


      注意事項

      メールの宛先はひとつに限定するか、同じキャリアのメールアドレスを設定してください。
      絵文字によっては表示されないものがあります。これはdocomoの絵文字番号を元にほかのキャリアの絵文字の中からよく似た絵文字に変換しているためで、該当する絵文字が存在しない番号は欠番となります。
      | technicals | 17:34 | - | - | - | - |
      Exwarp MailKit 1.0.406.*リリースのお知らせ
      0
        ExwarpMailKit1.0.406.*をリリースいたしました。
        主な変更点は次のとおりです。
        ■Exwarp.Net.RFC.MIME.MIMETransform.SafeModeプロパティ(STATICプロパティ)を追加しました。これは一部のSMTPサーバーがメールのリレー時に?=の後ろに強制的にホワイトスペースを追加する仕様に対処するために使用します。上記プロパティをTrueに設定した場合、ASCII文字列も強制的にMIMEエンコードして?= =?が出現しなくなります。
        ■Exwarp.Net.Mail.MailOperations.GetAttachmentsOperationクラスの仕様を一部修正いたしました。
        これは一部のメールエージェントが本文なしのメールを送信してきた場合でも添付ファイルの取得を可能にするためです。本仕様変更により、Content-Typeがmultipart/mixedであり、サブコンテンツにtext/*が含まれない場合でもGetAttachmentsカスタムオペレーションで添付ファイルを取得できるようになります。
        | information | 16:40 | - | - | - | - |
        【質問】サブミッションポート(port587)とSMTP AUTHを使った送信は行えますか?
        0
          Exwarp.MailKitに含まれるExwarp.Net.Smtpライブラリでは、送信ホストのポート番号を任意に変更することが出来ます。587番ポートを使用して送信するには、

          [C#]
          Exwarp.Net.Smtp.SmtpClient smtp = new Exwarp.Net.Smtp.SmtpClient(HOST_NAME,587);

          [VB.Net]
          Dim smtp As New Exwarp.Net.Smtp.SmtpClient(HOST_NAME,587)


          のようにコンストラクタの2番目のパラメータに接続したいホストのポート番号を指定します。
          SMTP_AUTHにつきましても、PLAIN,LOGIN,CRAM-MD5に対応しております。
          ただし、TLSやSSLを利用した暗号化通信には対応しておりませんのでご注意ください。
          | information | 10:14 | - | - | - | - |
          ExwarpMailKit1.0.359.*リリースのお知らせ
          0
            Exwarp MailKit 1.0.359.*をリリースいたしました。本バージョンには以下の変更点があります。

            ■非同期スレッドで発生した例外がメインスレッドで補足できないバグを修正。

            ■Return-PathにFromで設定した値が強制的に適用される仕様を変更。Return-PathとFromヘッダーフィールドに異なるメールアドレスを指定できます。

            ■HideBccプロパティの追加。SMTPホストへのBCCヘッダーフィールドの送信を制限します。

            製品版を購入いただいておりますユーザー様は無料でバージョンアップできます。
            | information | 16:27 | - | - | - | - |
            【質問】SMTPでデータ受信が行なえますか?
            0
              SMTPは、メール送信のためのプロトコルですので、「データ受信」が「メール受信」という意味でしたら、POP3プロトコルを使用する必要があります。
              Exwarp MailKitにはPOP3クライアントも含まれておりますので、こちらを利用してメール受信プログラムは簡単に実装できます。

              Exwarp MailKitには、SMTPクライアントも含まれておりますが、あくまでSMTPプロトコルの枠内でのデータ受信となりますので、独自のメッセージを送受信することは出来ません。
              | technicals | 22:49 | - | - | - | - |
              CompoundSmtpClientトライアウトバージョン公開のお知らせ
              0
                複数のSMTPクライアントを使用して大量メールの並列送信が行なえるExwarp.Net.Smtp.CompoundSmtpClientが含まれるExwarp.Net.Smtp.Extension.dllを公開しました。
                CompoundSmtpClientを使用するにはパスキーの取得が必要です。(スパムメール送信防止のためご協力お願いいたします)
                パスキーの取得はこちらで行なえます。

                メールを大量に送信するサンプルコードは次のようになります。
                [C#]
                Exwarp.Net.Smtp.CompoundSmtpClient client = new Exwarp.Net.Smtp.CompoundSmtpClient("HOST_NAME",10);
                client.SetProperty("tryout_user","パスキーのID");
                client.SetProperty("tryout_pass","パスキーのパスワード");
                client.Connect();
                client.SendReceive(MAILS);
                client.Close();

                解説
                HOST_NAMEはSMTPホスト名を表す文字列。
                MAILSは送信メールを表すSystem.Collections.IList型のコレクションです。

                CompoundSmtpClientはコンストラクタに、ホスト名とプロセス数を受け取ります。この例では同じホストに10プロセスでメールを送信することになります。AddSmtpClient()メソッドを使用して、他のSMTPホストに接続することもできます。

                メールの送信は通常どおりですが、トライアウトバージョンではパスキーを設定しなければ接続に失敗します。SetProperty()メソッドを使用してパスキーを設定します。

                このライブラリをスパムメール送信に使用することは禁止します。大量のメールマガジンの送信などに使用して下さい。

                Exwarp.Net.Smtp.Extension.dllのダウンロード
                | information | 18:19 | - | - | - | - |
                【質問】2台のSMTPサーバー間で電文の送受信を行なえますか?
                0
                  Exwarp MailKitはSMTPクライアントとして使用することもできますから、SMTPというプロトコルの枠内であれば、SMTPサーバーへのメッセージの送信や受信は簡単に行なえます。
                  たとえば、独自のメッセージを送信して応答を取得するなどということは、SMTPプロトコルの枠を超えていますので対応できない可能性もあります。
                  さらに詳しく情報を希望なさる場合は、info@exwarp.comまでご連絡ください。
                  | technicals | 09:30 | - | - | - | - |
                  SMTP:メールの送信状況を確認する
                  0
                    ExwarpMailKit1.0.339.*ライブラリを使用すると、複数メールの送信中にメールが送信されるたびにイベントを検知することができます。大量のメールが送信されている場合に、メール送信の進行状況を確認することができます。
                    [C#]
                    private void OnMailMessageSent(object sender,Exwarp.Net.Mail.MailEventArgs e)
                    {
                      Exwarp.Net.Mail.MailMessage mail = e.Mail;
                      //カスタム処理を記述します。
                    }

                    //以下はメールの送信ロジック
                    //通常、任意の関数内に記述します。
                    Exwarp.Net.Smtp.SmtpClient client = new Exwarp.Net.Smtp.SmtpClinet("SMTP_HOST");
                    client.MailMessageSent += new Exwarp.Net.Mail.MailEventHandler(this.OnMailMessageSent);
                    client.Connect();
                    clinet.SendReceive(MAILS);
                    client.Close();

                    解説
                    SMTP_HOSTはSMTPホストを表す文字列。
                    MAILSは送信メールのコレクションを表すSystem.Collections.IList型オブジェクトです。

                    通常のメール送信処理までに、MailMessageSentイベントにイベントハンドラを追加しておきます。このようにすることでメールが送信されるたびに追加したイベントハンドラに制御が移ります。
                    今回の場合、OnMailMessageSentというイベントハンドラを追加しています。この関数は、object型のパラメータとExwarp.Net.Mail.MailEventArgs型のパラメータを受け取ります。
                    二つ目のパラメータのMailプロパティを参照することで、送信されたメールを取得することができます。

                    注意点:
                    このイベントはメール送信中にエラーが発生しても、正常にSMTPホストがメールを受け付けても必ず発生します。メールの送信が成功したか失敗したかを確認する場合は、e.Mail.GetProperty("SendResult")の値をチェックします。
                    成功している場合は,Exwarp.Net.Smtp.SendResult.Complete、失敗した場合はExwarp.Net.Smtp.SendResult.Failedがセットされます。

                    この機能はExwarpMailKit1.0.339.*以上のライブラリで使用できます。
                    | technicals | 14:48 | - | - | - | - |
                    メールの送信結果を取得する
                    0
                      Exwarp MailKit 1.0.339.*を使うとメール送信が成功したか、失敗したかを確認することができます。
                      [C#]
                      //Exwarp.Net.Smtp.SmtpClient.SendReceive(MAILS)を使ったメール送信処理

                      foreach(Exwarp.Net.Mail.MailMessage mail in MAILS)
                      {
                        if(Exwarp.Net.Smtp.SendResult.Complete.Equals(mail.GetProperty("SendResult")))
                        {
                          //成功時の処理
                        }
                        else
                        {
                          //失敗時の処理
                        }
                      }
                      [解説]

                      送信処理中にエラーが発生する場合、Exwarp.Net.Mail.MailMessageSendResultカスタムプロパティにExwarp.Net.Smtp.SendResult.Failedがセットされ、送信に成功した場合、Exwarp.Net.Smtp.SendResult.Completeがセットされます。
                      この値をチェックすることで正常にメールが送信されたかどうかを判断できます。

                      この機能は1.0.339.*以上のライブラリで利用可能です。
                      また、この機能は実際にメールが受信者まで送信されたかどうかを識別するものではありません。SMTPホストが送信メールを正常に受け付けたかどうかを判断するだけですので、QUITコマンドが送信される前に接続が切断された場合などは、SendResultカスタムプロパティの値に関係なく、メールの送信が行われない場合もありますのでご注意ください。


                      | technicals | 12:29 | - | - | - | - |
                      ExwarpMailKitバージョンアップのお知らせ(1.0.339.*)
                      0
                        Exwarp MailKit 1.0.339.*をリリースしました。
                        SMTPライブラリに機能追加がなされています。主な変更は以下のとおりです。

                        ○送信時にエラーが発生しても送信処理を続けられるようになりました。
                        ○複数のメールを送信中にメールを1件送信するたびにイベントが発生するようになりました。送信処理の進行状況を確認できます。
                        ○送信に成功したか失敗したかを判別できるようになりました。

                        その他の追加機能(スパムピッカー、XMLコマンド)のベータ版、アルファ版も試用できます。

                        製品版をご購入いただいたユーザー様は無料でバージョンアップできます。
                        | information | 15:36 | - | - | - | - |
                        HMAC-MD5(鍵付きMD5,KeyedMD5)を実行する
                        0

                          HMAC-MD5(鍵付きMD5やKeyed-MD5などとも表現される)は、SMTP認証などに使用される暗号化プロセスです。

                          Exwarp MailKitを利用すると、HMAC-MD5も簡単に実行できます。

                          [C#]
                          Exwarp.Transform.ITransform trans =
                            new Exwarp.Security.EncryptTransform.HMACMD5Transform("KEY_TOKEN");
                          byte[] encoded = trans.Encode(SRC_BYTES);
                          [VB.Net]
                          Dim trans As Exwarp.Transform.ITransform
                            trans = New Exwarp.Security.EncryptTransform.HMACMD5Transform("KEY_TOKEN");
                          Dim encoded() as Byte
                          encoded = trans.Encode(SRC_BYTES)
                          解説
                          KEY_TOKENは暗号化の際に使用するキーを表す文字列、
                          SRC_BYTESは、暗号化されるバイト列を表します。

                          HMAC-MD5を実行するために、Exwarp.Security.EncryptTransform.HMACMD5Transformのインスタンスを生成します。このクラスのコンストラクタには、暗号化に使用するキーを表す文字列をセットします。

                          Encode()メソッドを使用して、暗号化を実行します。パラメータは暗号化されるバイト列をセットします。
                          このメソッドは暗号化されたバイト列を戻り値として返します。

                          | technicals | 23:35 | - | - | - | - |
                          PopBeforeSmtp認証を実行する
                          0

                            SMTPホストによっては、送信前にPOP3サーバーへの認証を完了させておかなければメールの送信が行えないことがあります。こうした認証をPopBeforeSmtpと言います。Exwarp.Net.Pop3.Pop3Clientを使うと簡単にPopBeforeSmtp認証が行えます。

                            [C#]
                            Exwarp.Net.Pop3.Pop3Client pc = new Exwarp.Net.Pop3.Pop3Client("POP3_HOST");
                            pc.User = "USER";
                            pc.Pass = "PASSWORD";
                            pc.RunCommand("PopBeforeSmtp");
                            //pc.RunCommand("PopBeforeSmtp","USER","PASSWORD");

                            Exwarp.Net.Smtp.SmtpClient sc = new Exwarp.Net.Smtp.SmtpClient("SMTP_HOST");
                            sc.Connect();
                            sc.SendReceive(MAIL);
                            sc.Close();
                            [VB.Net]
                            Dim pc As New Exwarp.Net.Pop3.Pop3Client("POP3_HOST")
                            pc.User = "USER"
                            pc.Pass = "PASS"
                            pc.RunCommand("PopBeforeSmtp")
                            'pc.RunCommand("PopBeforeSmtp","USER","PASSWORD")

                            Dim sc As New Exwarp.Net.Smtp.SmtpClient("SMTP_HOST")
                            sc.Connect()
                            sc.SendReceive(MAIL)
                            sc.Close()
                            解説

                            POP3_HOSTはPOP3ホストのホスト名、
                            SMTP_HOSTはSMTPホストのホスト名を表す文字列、
                            USERはPOP3ホストのユーザー名、
                            PASSWORDはPOP3ホストのパスワードを表す文字列、
                            MAILは送信メールを表すExwarp.Net.Mail.MailMessageの初期化済みインスタンスです。

                            PopBeforeSmtp認証を実行するために、Exwarp.Net.Pop3.Pop3ClientPopBeforeSmtpカスタムオペレーションを実行します。このカスタムオペレーションはPOP3ホストへの認証処理のみ実行します。事前にユーザー名とパスワードをPop3Clientインスタンスに設定しておく方法と、PopBeforeSmtpカスタムオペレーションのパラメータとして、ユーザー名とパスワードを設定する二つの方法があります。(サンプルコードにてコメントアウトしている方法が後者です。)
                            PopBeforeSmtpカスタムオペレーションはカスタムオペレーション内で、ホストへの接続、切断処理を行いますので、Connect()Close()メソッドを呼び出す必要はありません。(仮にこれらのメソッドをコールしても無視されます。)

                            PopBeforeSmtp認証が完了すると、メールの送信が通常どおり行えます。

                            | technicals | 15:17 | comments(1570) | trackbacks(0) | - | - |
                            メール送信時の送信ホスト名を設定する
                            0

                              SmtpClientLocalHostプロパティを使用すると、SMTPHELO/EHLOコマンド送信時に、メール送信ホスト名を通知することができます。

                              [C#]
                              client.LocalHost="localhost";

                              client.Connect();
                              client.SendReceive(MAIL);
                              client.close();
                              [VB.Net]
                              client.LocalHost = "localhost"

                              client.Connect()
                              client.SendReceive(MAIL)
                              client.Close()
                              解説

                              clientExwarp.Net.Smtp.SmtpClientのインスタンスを表します。
                              MAILは初期化済みのExwarp.Net.Mail.MailMessageクラスのインスタンスを表します。

                              送信前に、SmtpClientLocalHostプロパティにメール送信ホスト名を設定します。
                              このプロパティに値が設定されると、SmtpClientは、HELO/EHLOコマンド送信時に、メール送信ホスト名を通知します。

                              このプロパティの値が未設定の場合、SmtpClientは、HELO/EHLOコマンド送信時にメール送信ホスト名を通知しません。たいていの場合、メール送信ホスト名は省略できますので、このプロパティを設定する必要はありません。

                              この機能は、 1.0.311.*以上のバージョンで使用できます。

                              | technicals | 12:00 | comments(1689) | trackbacks(0) | - | - |
                              SmtpClientを使って一度の接続で複数のメールを連続送信する
                              0

                                Exwarp.Net.Smtp.SmtpClientを使用すると、複数のメールメッセージを一度の接続で送信することができます。1メッセージごとに接続する場合に比べてパフォーマンスが格段に向上します。

                                [C#]
                                System.Collections.ArrayList mails = new System.Collections.ArrayList();
                                mails.Add(MAIL1);
                                mails.Add(MAIL2);

                                client.Connect();
                                client.SendReceive(mails);
                                client.Close();
                                [VB.Net]
                                Dim mails As New System.Collections.ArrayList()
                                mails.Add(MAIL1)
                                mails.Add(MAIL2)

                                client.Connect()
                                client.SendReceive(mails)
                                client.Close()
                                解説

                                clientは、Exwarp.Net.Smtp.SmtpClientのインスタンスを表します。
                                MAIL1,MAIL2Exwarp.Net.Mail.MailMessageの初期化済みインスタンスを表します。

                                一度の接続で送信したいメールメッセージをコレクションに追加します。System.Collections.ArrayListだけでなく、System.Collections.IEnumerableインターフェースを実装したクラスのインスタンスなら何でも構いません。

                                メールを追加したコレクションをSmtpClientSendReceive()メソッドにパラメータとして渡すと、SmtpClientは一度の接続で、コレクションに含まれるすべてのメッセージを送信します。

                                この機能は1.0.311.*以上のバージョンで利用できます。Tryoutバージョンでは、一度に連続送信できるメッセージの数は3件に制限されます。コレクションに4件以上追加しても最初の3件しか送信されませんのでご注意ください。

                                | technicals | 11:21 | comments(2096) | trackbacks(0) | - | - |
                                Exwarp MailKit 1.0.311.* リリースのお知らせ
                                0

                                  Exwarp MailKitの最新バージョン1.0.311.*をリリースしました。

                                  主な変更点は以下のとおりです。

                                  • Pop3Client.SendReceive()メソッドで複数のメールメッセージを指定できるように仕様変更しました。
                                    一度の接続で複数のメールメッセージを連続して送信できます。
                                  • SmtpClientLocalHostプロパティを追加しました。
                                    HELO/EHLO
                                  • コマンド送信時にメール送信ホスト名を指定できます。
                                    このプロパティに値を設定しない場合、送信ホスト名は省略されます。
                                  • mailboxにメールアドレス(addr-spec)が含まれない場合でも、ヘッダーが正しく表示されるように仕様変更しました。
                                    この変更により、display-nameのみのFromヘッダーなども解析できます。

                                  | information | 18:03 | comments(6692) | trackbacks(0) | - | - |
                                  SMTP-AUTHを使用してSMTPホストに接続する
                                  0

                                    ESMTPでは、SMTPサーバーへの認証手続きが可能になっています。SMTP認証を使用したログイン処理を行うためには、Exwarp.Net.Smtp.SmtpClient.UseESMTPプロパティを使用します。

                                    HOST_NAMEはSMTPホスト名、
                                    USERはユーザー名、
                                    PASSはパスワードを表す文字列です。
                                    MAILは送信するメールメッセージを表すExwarp.Net.Mail.MailMessageのインスタンスです。

                                    [C#]
                                    Exwarp.Net.Smtp.SmtpClient client = new Exwarp.Net.Smtp.SmtpClient("HOST_NAME");
                                    client.User = "USER";
                                    clinet.Pass = "PASS";
                                    client.UseESMTP = true;
                                    client.AuthType = Exwarp.Net.Smtp.SmtpAuthType.CramMD5;

                                    client.Connect();
                                    client.SendReceive(MAIL);
                                    clinet.Close();
                                    [VB.Net]
                                    Dim client As New Exwarp.Net.Smtp.SmtpClient("HOST_NAME");
                                    client.User = "USER"
                                    client.Pass = "PASS"
                                    client.UseESMTP = True
                                    client.AuthType = Exwarp.Net.Smtp.SmtpAuthType.CramMD5

                                    client.Connect()
                                    client.SendReceive(MAIL)
                                    client.Close()
                                    解説

                                    Exwarp.Net.Smtp.SmtpClientのインスタンスを生成します。

                                    SMTP-AUTHに使用するユーザー名とパスワードを設定します。

                                    SmtpClientUseESMTPプロパティをtrueに設定すると、SMTPクライアントはESMTPモードで動作します。SMTP-AUTHの認証方法を切り替えたい場合、SmtpClientAuthTypeプロパティに使用したい認証方法を表すExwarp.Net.Smtp.SmtpAuthTypeのいずれかの値を設定します。

                                    ホストに接続し、SendReceive()メソッドを使用して、メールメッセージを送信します。

                                    この機能は、1.0.308.*以上のバージョンで使用することができます。

                                    | technicals | 13:17 | comments(1925) | trackbacks(0) | - | - |
                                    ESMTP(SMTP-AUTH)用インターフェース追加バージョン(1.0.308.1)公開のお知らせ
                                    0

                                      ESMTP(SMTP-AUTH)用のインターフェースを追加した1.0.308.1を公開いたしました。

                                      ESMTPモードに切り替えるUseESMTPプロパティが追加されています。このプロパティをtrueに設定すると、SMTPクライアントはセッション開始時に、EHLOコマンドを送信します。ホストが250 AUTH応答を返す場合、SMTPクライアントはSMTP-AUTHを使用してログイン処理を行います。250 AUTH応答が含まれない場合、ログイン処理は行われません。

                                      | information | 12:42 | comments(1844) | trackbacks(0) | - | - |
                                      メールにダミーの宛先を設定する
                                      0

                                        同時に複数の宛先にメールを送信する際、Toの値を全て同じにしたい場合があります。
                                        例えば、AさんとBさんにメールを送りますが、AさんとBさんが受け取ったメールのToメールヘッダーには"<customers@myhost.com>"などとしたい場合です。

                                        このようにダミーの宛先を設定する場合、SetProperty("_To",***)を使用します。

                                        [C#]
                                        Exwarp.Net.Mail.MailMessage mail =
                                          new Exwarp.Net.Mail.MailMessage(System.Text.Encoding.GetEncoding("iso-2022-jp"));
                                        mail.To = "customers@myhost.com";

                                        string[] toList = new string[]{"a@a.com","b@b.com",};
                                        mail.SetProperty("_To",toList);
                                        解説

                                        Toヘッダーにダミーの宛先を設定します。

                                        実際の送信先は、文字列型の配列に格納し、MailMessageSetProperty()メソッドを使用して_Toカスタムプロパティに設定します。_Toカスタムプロパティがメールメッセージに設定されている場合、SMTPクライアントはこの値をメールの送信先と認識します。

                                        同じ原理で_Cc_Bccカスタムプロパティも使用できます。

                                        この機能の実行には、Exwarp MailKit バージョン1.0.307.*以上が必要です。

                                        | technicals | 17:14 | comments(1970) | trackbacks(0) | - | - |
                                        Exwarp MailKit 1.0 Beta1 rc2(バージョン1.0.307.1)公開のお知らせ
                                        0

                                          SMTP-AUTHRFC2231などに対応したExwarp MailKit 1.0 Beta1 rc2を公開しました。

                                          以前のバージョンとの大きな違いは次のとおりです。

                                          • SMTP-AUTHに対応(PLAIN、LOGIN、CRAM-MD5に対応)
                                          • HMACMD5Transformクラスの追加
                                          • ByteBufferクラスのストリーム対応
                                          • RFC2231形式のヘッダーフィールドパラメータに対応(RFC2231形式での書き出しには非対応)
                                          • メール本文でBare LF/Bare CR(LF及びCR単体での使用)をCR/LFに自動変換機能の追加
                                          • text/htmlメディアタイプのcharsetパラメータ自動付加を抑止
                                          • Exwarp.Net.Mail.MailContext.MyMailAddressプロパティをExwarp.Net.Mail.MailContext.SenderAddressに変更(互換性維持のため、Obsoleteとなります。)
                                          • Exwarp.Net.Mail.MailContext.GetMyAddress()メソッドをExwarp.Net.Mail.MailContext.GetSenderAddress()に変更(互換性維持のため、Obsoleteとなります。)
                                          • その他の微細な仕様変更を追加

                                          本バージョンの公開は短期間で終了いたします。その後製品版の公開となり、無料バージョンは機能制限のついたトライアル版へ移行いたします。

                                          | information | 17:57 | comments(1938) | trackbacks(0) | - | - |
                                          SMTP-AUTH対応のお知らせ
                                          0

                                            次期バージョンにてExwarp.Net.Smtp.SmtpClientSMTP-AUTH機能を実装します。対応するのは、PLAINLOGINCram-MD5の3つの認証方式です。

                                            本機能の実装に伴い、Exwarp.Transform.HMACMD5Transformクラスが追加されています。このクラスはキー付きのMD5ダイジェスト生成をサポートします。

                                            これらの機能は、1.0.300.*より後のバージョンで提供されます。

                                            1.0.300.*は最終ベータの予定でしたが、リリース後多くの機能が追加されたため、再度最終ベータExwarp MailKit 1.0 Beta rc2をリリースする予定です。

                                            | information | 16:12 | comments(1785) | trackbacks(0) | - | - |
                                            SMTPコマンドを操作する
                                            0

                                              Exwarpでは、メール送信のほとんどの処理をカスタムオペレーションで自動化していますが、SMTPコマンドを直接操作することもできます。SMTPコマンドの操作にはExwarp.Net.Smtp.SmtpClient,Exwarp.Net.Smtp.SmtpRequest及びExwarp.Net.Smtp.SmtpResponseを使用します。

                                              [C#]
                                              Exwarp.Net.Smtp.SmtpClient client =
                                                  new Exwarp.Net.Smtp.SmtpClient("HOST_NAME");

                                              client.Connect();

                                              Exwarp.Net.RFC.IResponseMessage response = null;

                                              response = client.SendReceive(new Exwarp.Net.Smtp.SmtpRequest("HELO¥r¥n"));
                                              System.Diagnostics.Debug.WriteLine(((Exwarp.Net.Smtp.SmtpResponse)response).Status);

                                              client.Close();
                                              [VB.Net]
                                              Dim client As New Exwarp.Net.Smtp.SmtpClient("HOST_NAME")

                                              client.Connect();

                                              Dim response As Exwarp.Net.RFC.IResponseMessage = Nothing

                                              response = clinet.SendReceive(New Exwarp.Net.Smtp.SmtpRequest("HELO" & vbCrLf))
                                              System.Diagnostics.Debug.WriteLine(CType(response,Exwarp.Net.Smtp.SmtpResponse).Status)

                                              client.Close()
                                              解説

                                              SMTPコマンドを操作するためにExwarp.Net.Smtp.SmtpClientのインスタンスを生成します。コンストラクタにホスト名を表す文字列を受け取ります。

                                              Connect()メソッドでSMTPホストに接続します。

                                              SendReceive()メソッドを使用してSMTPコマンドを送信します。送信するSMTPコマンドはExwarp.Net.Smtp.SmtpRequestオブジェクトがカプセル化します。コンストラクタに送信したいSMTPコマンドを表す文字列を設定します。この際必ず末尾にCR/LFを付加します。

                                              SendReceive()メソッドはExwarp.Net.RFC.IResponseMessage(インターフェース)型の戻り値を返します。このオブジェクトはホストからの応答をカプセル化しています。厳密にはExwarp.Net.Smtp.SmtpResponse型のオブジェクトが返されますので,キャストしてSMTP応答の詳細な情報が取得できます。

                                              SmtpResponseオブジェクトのStatusプロパティからSMTPホストの応答メッセージ(ステータスライン)を表す文字列が取得できます。拡張SMTPの複数行応答にも対応していますので、HELOコマンドの代わりにEHLOコマンドを使うこともできます。この場合ホストは挨拶メッセージに加えてホストがサポートしている拡張SMTPメソッドの一覧を返します。

                                              | technicals | 19:10 | comments(1831) | trackbacks(0) | - | - |
                                              Exwarpを使用したメール送信
                                              0

                                                Exwarpを使ってメールを送信するプログラムを紹介します。

                                                SMTPプロトコルでのメール送信には、Exwarp.Net.Smtp.SmtpClientを使用します。

                                                HOST_NAME はホスト名を表す文字列です。


                                                [C#]
                                                Exwarp.Net.Mail.MailMessage mail
                                                    = new Exwarp.Net.Mail.MailMessage(System.Text.Encoding.GetEncoding("iso-2022-jp"));

                                                mail.RunCommand("AddTo","MyFriend","myfriend@myfriend.com");
                                                mail.Subject = "明日の打ち合わせ";
                                                mail.From = "me@me.com";
                                                mail.Body = "明日の件です。....[以下、本文テキスト]";

                                                Exwarp.Net.Smtp.SmtpClient client
                                                    = new Exwarp.Net.Smtp.SmtpClient("HOST_NAME");

                                                client.Connect();
                                                client.SendReceive(mail);
                                                client.Close();

                                                [VB.Net]
                                                Dim mail As New Exwarp.Net.Mail.MailMessage(System.Text.Encoding.GetEncoding("iso-2022-jp"))

                                                mail.RunCommand("AddTo","MyFriend","myfriend@myfriend.com")
                                                mail.Subject = "明日の打ち合わせ"
                                                mail.From = "me@me.com"
                                                mail.Body = "明日の件です。....[以下、本文テキスト]"

                                                Dim client As New Exwarp.Net.Smtp.SmtpClient("HOST_NAME")

                                                client.Connect()
                                                client.SendReceive(mail)
                                                client.Close()

                                                [解説]

                                                exwarpでメールを送信するためには、Exwarp.Net.Smtp.SmtpClientを使用します。


                                                送信したいメールはExwarp.Net.Mail.MailMessageがカプセル化します。


                                                まず、MailMessageインスタンスを初期化します。コンストラクタは、メールメッセージに適用される文字セットを指定します。日本語で広く使われるのはiso-2022-jpという文字セットです。System.Text.EncodingオブジェクトのGetEncoding()メソッドを使用して文字セット設定します。

                                                MailMessageに登録されているAddToカスタムオペレーションを実行します。これはToヘッダーフィールドに指定された表示名とアドレスで構成される送信先情報を追加するカスタムオペレーションです。表示名が必要ない場合、nullを指定できます。

                                                Subjectプロパティに件名を設定します。任意の文字列が使用できますが改行は含められません。Subjectヘッダーの内容は自動的にMIMEエンコードされます。

                                                Fromプロパティに送信者を指定します。プロパティに直接文字列を指定する方法とAddMailBoxカスタムオペレーションを使用する方法があります。カスタムオペレーションを使用した場合

                                                [C#]
                                                mail.RunCommand("AddMailBox","From","送信者の表示名","me@me.com");
                                                [VB.Net]
                                                mail.RunCommand("AddMailBox","From","送信者の表示名","me@me.com")
                                                のようになります。

                                                次にメールメッセージボディ(本文)を設定します。MailMessageBodyプロパティに文字列を代入するだけで本文を更新できます。メッセージボディの内容はコンストラクタで設定した文字セットで自動的にエンコードされます。

                                                メールの送信にはExwarp.Net.Smtp.SmtpClientを使います。コンストラクタにはSMTPサーバーのホスト名を表す文字列を設定します。

                                                Connect()メソッドでホストに接続します。

                                                SendReceive()メソッドでメールを実際にホストに送信します。パラメータにはメールメッセージをカプセル化するMailMessageのインスタンス(この場合mail)をセットします。

                                                SendReceive()メソッドは実際には、SendMessageカスタムオペレーションのラッパーですからカスタムオペレーションを直接呼び出してメールを送信することもできます。その場合

                                                [C#]
                                                client.RunCommand("SendMessage",mail);
                                                [VB.Net]
                                                client.RunCommand("SendMessage",mail)
                                                のように記述します。

                                                最後にClose()メソッドで接続を切断します。


                                                | technicals | 15:08 | comments(1712) | trackbacks(0) | - | - |