以下のサイトを参考にYahooからメールを送ってみようと思います。
-
【C#】メールを送信する方法を紹介(MailKit)
C#でメールを送信する場合は「MailKit」を使います。MailKitはメールの送信や受信などメールに関する機能を提供 ...
続きを読む
以下の環境で動作確認を実施しています
バージョン | |
---|---|
OS | Windows 11 Pro |
.Net | 8.0 |
MailKit | 4.5.0 |
Yahooメールの設定
まずは、Yahooメール上でSMTPを使用できるように設定を変更する必要があります。以下のサイトを参考にSMTPを有効化します
-
Yahoo!メールヘルプ
続きを読む
少し手を加える
上記の参考サイトにあるコードに少しだけ手を加えて使いやすくします
public async Task SendMailAsync(string to, string from, string subject, string text)
{
await SendMailAsync(to, from, "", subject, text, "");
}
public async Task SendMailAsync(string to, string from, string subject, string text, string filePath)
{
await SendMailAsync(to, from, "", subject, text, filePath);
}
まずは、CCを使わない関数を用意します
public async Task SendMailAsync(string to, string from, string cc, string subject, string text, string filePath)
{
// MimeMessageクラスのインスタンスを生成
var message = new MimeMessage();
// 送信元を追加
message.From.Add(new MailboxAddress("<送信元>", from));
// 宛先を追加
message.To.Add(new MailboxAddress("<宛先>", to));
// Ccを追加
if(cc != "")
{
message.Cc.Add(new MailboxAddress("<Cc>", cc));
}
// 件名を設定
message.Subject = subject;
// 本文を設定
if(filePath != "")
{
var multipart = new Multipart("mixed")
{
// 本文を設定
new TextPart(TextFormat.Plain)
{
Text = text,
},
// 添付ファイルを設定
new MimePart(MimeTypes.GetMimeType(filePath))
{
Content = new MimeContent(File.OpenRead(filePath)),
ContentDisposition = new ContentDisposition(),
ContentTransferEncoding = ContentEncoding.Base64,
FileName = Path.GetFileName(filePath)
}
};
message.Body = multipart;
}
else
{
var textPart = new TextPart(TextFormat.Plain);
textPart.Text = text;
message.Body = textPart;
}
using (var client = new MailKit.Net.Smtp.SmtpClient())
{
try
{
// SMTPサーバに接続
await client.ConnectAsync(_mail.SmtpHost, _mail.SmtpPort);
Console.WriteLine("接続完了");
// SMTPサーバ認証
await client.AuthenticateAsync(_mail.UserName, _mail.Password);
// 送信
await client.SendAsync(message);
Console.WriteLine("送信完了");
// 切断
await client.DisconnectAsync(true);
}
catch (Exception ex)
{
Console.WriteLine($"Failed send:{ex}");
}
}
}
次にCCが設定されていない場合と添付ファイルがない場合でそれぞれ設定するようにしました
実際に使ってみる
SMTPの情報は最初に紹介している参考サイトに記載があるのでそちらを参考に設定しています
var mail = new Mail()
{
SmtpHost = "smtp.mail.yahoo.co.jp",
SmtpPort = 465,
UserName = "yahooメールの@より前の部分",
Password = "yahooメールのパスワード",
};
// 添付なしでメールを送信する場合
var service = new MailKit_Test(mail);
service.SendMailAsync(
"送信先アドレス",
"SMTPのUserNameと一緒@yahoo.co.jp",
"テスト送信",
"これはテストです。").Wait();
// 添付ありでメールを送信する場合
service.SendMailAsync(
"送信先アドレス",
"SMTPのUserNameと一緒@yahoo.co.jp",
"テスト送信",
"これはテストです。",
@"Pictures\blog\サムネイル\サムネイル画像072.jpg").Wait();
これでエラー発生時にメールを送れるようになりました
会社紹介
私が所属しているアドバンスド・ソリューション株式会社(以下、ADS)は一緒に働く仲間を募集しています
会社概要
「技術」×「知恵」=顧客課題の解決・新しい価値の創造
この方程式の実現はADSが大切にしている考えで、技術を磨き続けるgeekさと、顧客を思うloveがあってこそ実現できる世界観だと思っています
この『love & geek』の精神さえあれば、得意不得意はno problem!
技術はピカイチだけど顧客折衝はちょっと苦手。OKです。技術はまだ未熟だけど顧客と知恵を出し合って要件定義するのは大好き。OKです
凸凹な社員の集まり、色んなカラーや柄の個性が集まっているからこそ、常に新しいソリューションが生まれています
ミッション
私たちは、テクノロジーを活用し、業務や事業の生産性向上と企業進化を支援します
-
アドバンスド・ソリューション株式会社
アドバンスド・ソリューションは主にMicrosoft製品を使用して、企業の生産性向上に取り組んでいます。要件定義から導入 ...
サイトへ移動