C# デフォルトのメーラーの起動時

タグの編集
投稿者 ケンケン  (社会人) 投稿日時 2023/4/13 14:08:14
  

            string email =  "WhiteTigerxxx@yahoo.co.jp";
            string subject = "請求書の添付資料有り";
            string body = "一行目の文字列"                + "%0D%0A" +
                          "二行目の文字列"                + "%0D%0A" + 
                          "三行目の文字列";
            string cc = "test1@yahoo.co.jp";
            string bcc = "test2@yahoo.co.jp";

            Process.Start(
                        "mailto:"  + email  +     // 宛先
                        "?" +
                        "subject=" + subject +    // 件名  
                        "&" +
                        "body="    + body +       //本文 
                        "&" +
                        "cc="      + cc +        //CC
                        "&" +
                        "bcc="     + bcc          //BCC         
                        );

    上記のコードでデフォルトのメーラーが立ち上がりますが、
  添付ファイルの付与は出来るでしょうか?

  何方かご存知であればご教授お願い致します。


投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/4/13 14:17:57
添付までできるかどうかは、お使いのメーラーによって異なりますし、
mailto: プロトコルで指定できるかどうかも保証されてはいません。

メール送信自体が目的であれば、 MailKit を使うのが正攻法かと思います。
https://atmarkit.itmedia.co.jp/ait/articles/1811/21/news023.html

Microsoft Outlook にてメール添付作業が必要なのであれば、
Microsoft.Office.Interop.Outlook を参照に加えたうえで、
MailItem オブジェクトに対して .Attachment.Add を呼び出します。
https://qiita.com/Gakui_Mounai/items/60e17175b353a93313bf
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/4/13 14:29:50
> 添付までできるかどうかは、お使いのメーラーによって異なりますし、
> mailto: プロトコルで指定できるかどうかも保証されてはいません。

環境依存性が高いので mailto: で細かい指定をすることはおすすめしません。
https://www.linuxadictos.com/ja/algunos-clientes-de-correo-son-vulnerables-a-ataques-de-manipulacion-al-usar-mailto.html


Thunderbird だと 「?attach=ファイル名」パラメーターがあるらしい。
http://www.oyazinohitorigoto.com/softwares/actCapture/index_tutorial_a2.html

Becky! の場合は「?X-Becky-Attachment=ファイル名」パラメーターらしい。
http://www.rimarts.com/b2board/b2board.cgi?ol=200112&tree=r8259


これらが現在でも使える機能なのかどうかは不明。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2023/4/13 14:32:15
> Becky! の場合は「?X-Becky-Attachment=ファイル名」パラメーターらしい。
URL 差し替え
https://www.rimarts.jp/b2board/b2board.cgi?ol=200112&tree=r8259
投稿者 ケンケン  (社会人) 投稿日時 2023/4/14 10:16:58
皆様、色々と情報ありがとうございます。

今、MailKit で苦戦しています。

        string MAIL_FROM = "sato-kenji@XXXX.co.jp";
        string MAIL_TO = "sato-kenji@XXXX.co.jp";
        string MAIL_ATT = @"C:\wk\XXXXX_出勤簿.pdf";
        string MAIL_SMTP = "smtp.office365.com";
        int MAIL_PORT = 587 ;

      

            // 送信メッセージを作成
            var msg = new MimeKit.MimeMessage();

            // 送信元
            msg.From.Add(new MimeKit.MailboxAddress("", MAIL_FROM));

            // 宛先(TO)
            msg.To.Add(new MimeKit.MailboxAddress("", MAIL_TO));
            msg.Cc.Add(new MimeKit.MailboxAddress("", MAIL_TO));
            msg.Bcc.Add(new MimeKit.MailboxAddress("", MAIL_TO));

            // 件名
            msg.Subject = "請求書の添付資料有り";

            // 本文
            var tp = new MimeKit.TextPart(MimeKit.Text.TextFormat.Plain);

            tp.Text = "メール送信テストを行う。";

            // 添付ファイル無しの場合
            //msg.Body = tp;

            // 添付ファイル有り
            var mt = MimeKit.MimeTypes.GetMimeType(MAIL_ATT);
            var att = new MimeKit.MimePart(mt)
            {
              Content = new MimeKit.MimeContent(System.IO.File.OpenRead(MAIL_ATT)),
              ContentDisposition  = new MimeKit.ContentDisposition(),
              ContentTransferEncoding = MimeKit.ContentEncoding.Base64,  
              FileName = System.IO.Path.GetFileName(MAIL_ATT)      
            };

            var mp = new MimeKit.Multipart("mixed");
            mp.Add(tp);
            mp.Add(att);
            msg.Body = mp;

            //SMTPサーバーに接続してメールを送信
            using (var sc = new MailKit.Net.Smtp.SmtpClient())
            {
                try
                {
                    // 接続
                    sc.Connect(MAIL_SMTP, MAIL_PORT);

                    // ユーザー認証
                    sc.Authenticate(userName, password);

                    // 送信
                    sc.Send(msg);

                    sc.Disconnect(true);
                }

                catch(Exception ex)
                {
                    MessageBox.Show("送信エラー" + "\r\n" +
                           ex.ToString(), "", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
            }
 
  送信エラーが出ます。

   Error message: "535: 5.7.3 Authentication unsuccessful"

     何方かご存知の方ご教授お願いいたします。



投稿者 (削除されました)  () 投稿日時 2023/4/14 11:18:32
(削除されました)
投稿者 ケンケン  (社会人) 投稿日時 2023/4/20 11:08:34
解決致しました。