C# デフォルトのメーラーの起動時
投稿者 魔界の仮面弁士  (社会人)
投稿日時
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
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
これらが現在でも使える機能なのかどうかは不明。
> 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
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"
何方かご存知の方ご教授お願いいたします。
今、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
解決致しました。
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
);
上記のコードでデフォルトのメーラーが立ち上がりますが、
添付ファイルの付与は出来るでしょうか?
何方かご存知であればご教授お願い致します。