質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

0回答

2881閲覧

C#でメール送信したい

AMK

総合スコア765

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

1クリップ

投稿2020/05/30 08:32

編集2020/05/31 23:42

現状

お世話になります

C#でメール送信しようと思い下記のコードを書きました。

エラーもなく動作してるっぽいのですが
メールが届かないです。

試したこと

ポート番号を変えたり、SMTPサーバーを変更したりしてみましたが
そもそもステータスコードなどが表示されていないので正常に動いているのか?が不明です。

やりたいこと

ステータスコードやエラーコードなどを表示させて正常にメールを送信できるようにしたい。

変更後

C#

1using System; 2using System.Windows; 3using MailKit; 4namespace Mail_ck_Alpha_1._00 5{ 6 /// <summary> 7 /// MainWindow.xaml の相互作用ロジック 8 /// </summary> 9 10 public partial class MainWindow : Window 11 { 12 public MainWindow() 13 { 14 InitializeComponent(); 15 } 16 17 private void Button_Click(object sender, RoutedEventArgs e) 18 { 19 20 // MimeMessageを作り、宛先やタイトルなどを設定する 21 var message = new MimeKit.MimeMessage(); 22 message.From.Add(new MimeKit.MailboxAddress("MailKit ユーザー", "aaaa@xxxxxxxxxx")); 23 message.To.Add(new MimeKit.MailboxAddress("MailKit 試験", "xxxxxxxx@i.softbank.jp")); 24 // message.Cc.Add(……省略……); 25 // message.Bcc.Add(……省略……); 26 message.Subject = "MailKit でメールを送信するテスト"; 27 28 // 本文を作る 29 var textPart = new MimeKit.TextPart(MimeKit.Text.TextFormat.Plain); 30 textPart.Text = @"MailKit を使ってメールを送ってみるテストです。"; 31 32 // MimeMessageを完成させる 33 message.Body = textPart; 34 35 // SMTPサーバに接続してメールを送信する 36 using (var client = new MailKit.Net.Smtp.SmtpClient()) 37 { 38 39 // 開発用のSMTPサーバが暗号化に対応していないときは、次の行を追加する 40 //client.ServerCertificateValidationCallback = (s, c, h, e) => true; 41 42 43 try 44 { 45 client.Connect("sv8125.xserver.jp", 995); 46 TextBox01.Text = "接続完了\r\n"; 47 48 // SMTPサーバがユーザー認証を必要としない場合は、次の2行は不要 49 //client.AuthenticateAsync(userName, password); 50 TextBox01.AppendText("認証完了\r\n"); 51 52 client.(message); 53 TextBox01.AppendText("送信完了\r\n"); 54 55 client.DisconnectAsync(true); 56 TextBox01.AppendText("切断\r\n"); 57 } 58 catch (Exception ex) 59 { 60 TextBox01.AppendText(ex.ToString()); 61 } 62 } 63 64 } 65 } 66} 67 68コード

変更前

C#

1using System; 2using System.Windows; 3using MailKit; 4namespace Mail_ck_Alpha_1._00 5{ 6 /// <summary> 7 /// MainWindow.xaml の相互作用ロジック 8 /// </summary> 9 10 public partial class MainWindow : Window 11 { 12 public MainWindow() 13 { 14 InitializeComponent(); 15 } 16 17 private void Button_Click(object sender, RoutedEventArgs e) 18 { 19 20 // MimeMessageを作り、宛先やタイトルなどを設定する 21 var message = new MimeKit.MimeMessage(); 22 message.From.Add(new MimeKit.MailboxAddress("MailKit ユーザー", "mail_addres")); 23 message.To.Add(new MimeKit.MailboxAddress("MailKit 試験", "mail_addres")); 24 // message.Cc.Add(……省略……); 25 // message.Bcc.Add(……省略……); 26 message.Subject = "MailKit でメールを送信するテスト"; 27 28 // 本文を作る 29 var textPart = new MimeKit.TextPart(MimeKit.Text.TextFormat.Plain); 30 textPart.Text = @"MailKit を使ってメールを送ってみるテストです。"; 31 32 // MimeMessageを完成させる 33 message.Body = textPart; 34 35 // SMTPサーバに接続してメールを送信する 36 using (var client = new MailKit.Net.Smtp.SmtpClient()) 37 { 38 39 // 開発用のSMTPサーバが暗号化に対応していないときは、次の行を追加する 40 //client.ServerCertificateValidationCallback = (s, c, h, e) => true; 41 42 43 try 44 { 45 client.ConnectAsync("svxxxx.xserver.jp", 995); 46 TextBox01.Text = "接続完了\r\n"; 47 48 // SMTPサーバがユーザー認証を必要としない場合は、次の2行は不要 49 //client.AuthenticateAsync(userName, password); 50 TextBox01.AppendText("認証完了\r\n"); 51 52 client.SendAsync(message); 53 TextBox01.AppendText("送信完了\r\n"); 54 55 client.DisconnectAsync(true); 56 TextBox01.AppendText("切断\r\n"); 57 } 58 catch (Exception ex) 59 { 60 TextBox01.AppendText(ex.ToString()); 61 } 62 } 63 64 } 65 } 66} 67

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/05/30 09:14

WireShark などのキャプチャツールを使って、普通にメーラーなどを使って正常に送信できる場合と、アプリを使った場合を比較してみると解決のためのヒントが見つかると思います。
hihijiji

2020/05/30 09:23

イベントハンドラ Button_Click の中で非同期メソッド(~Async)呼んでいて、その戻り値を破棄しています。 非同期について勉強するかAsync接尾語のつかない同期メソッドを呼んでください。
AMK

2020/05/31 23:39

ご連絡ありがとうございます。 さっそくSendAsyncなどのメソッドをSendなどAsyncに変更してみましたが ボタンを押しても動いているのか?解らない状態で 接続完了も認証完了も何も表示されない状態になってしまいました・・・・
hihijiji

2020/06/01 01:04

送信は出来たのですか? 送信できたなら、接続完了も認証完了も表示されないのは正常です。
AMK

2020/06/01 01:59 編集

お世話になります 送られていませんでした。 送信完了などのステータスメッセージも出ていません
hihijiji

2020/06/01 03:04

try~ catchの書き方がまずいです。 try~ catchを除いて実行してください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問