メールが送れません

タグの編集
投稿者 ピッチャー  (社会人) 投稿日時 2018/5/7 07:05:32
こんにちは。

VB.NETからメールを送れるはずだ、と思って試したのですが成功しません。

ポート番号25,465, 587を試し、EnableSsl=Trueも試しました。

ヤフー、Gmailアカウントでの送信を試みました。

こちらを参考にしました。
https://dobon.net/vb/dotnet/internet/smtpmail.html


30秒ほどフリーズしたようになった後、

追加情報:メールを送信できませんでした。

とのメッセージが表示されます。


そもそもメールの送信はできるのでしょうか。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/7 10:52:02
smtp.gmail.com を使う場合は、事前にアプリパスワードを設定してください。
https://support.google.com/accounts/answer/185833?hl=ja

アプリパスワードの設定には二段階認証を有効にする必要があります。
https://myaccount.google.com/security


もしくは、認証の不要な SMTP サーバーを利用するとか…。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/7 10:54:05
あるいは gmail アカウントの設定で、「安全性の低いアプリの許可」を
有効にすることでも、メール送信が可能になるかと。おすすめはしませんが
https://myaccount.google.com/security
投稿者 るきお  (社会人) 投稿日時 2018/5/8 00:23:32
参考にされているサイト(https://dobon.net/vb/dotnet/internet/smtpmail.html)の情報は古いようです。
System.Web.Mailは廃止されており、System.Net.Mailがその代わりです。
https://msdn.microsoft.com/ja-jp/library/system.web.mail(v=vs.110).aspx


gmailを使った送信はやってみたことはないんですが、検索したらサンプルソース付きで情報は出てきたので参考までに。
https://stackoverflow.com/questions/32260/sending-email-in-net-through-gmail

全部読んでないですが、数分間に送信したメールの量が多いとブロックされるなどサーバー側のブロック機能もあるようです。
あまり無制限にしてしまうと、メールアプリにただ乗りされてしまうのと、セキュリティの観点で厳しくする必要があるのとで、魔界の仮面弁士さんが上げられているようなポイントもあるのではないかと私も思います。

なお、gmailではないですが企業内に設置されたメールサーバーからの送信は何度もやったことがあり、System.Net.Mailクラスで簡単にできます。
投稿者 ピッチャー  (社会人) 投稿日時 2018/5/8 02:09:55
お二方、どうもありがとうございました。
私は古い情報を見ていたのですね。

gmailにてアプリパスワードの設定後、望みのとおりに送信する事ができました。

メールの取り扱いについては気軽なものでもないのですね。
勉強になりました。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2018/5/8 17:45:53
ちなみに System.Net.Mail の利用は、個人的にはお勧めしていません。
業務利用の場合は、尚のこと。
特に docomo 宛ての携帯アドレスへの送信には向きません。

理由はいくつかあるのですが、たとえば .NET 2.0 世代では、
7bit メールを送る際に文字コード絡みの不具合がありました。
http://d.hatena.ne.jp/kaorun/20060420/1145516533

また、メールヘッダーの
「Content-Transfer-Encoding: 7bit」が、誤って
「Content-Transfer-Encoding: sevenbit」と出力される不具合もあります。 
http://quoted65.rssing.com/chan-14601800/all_p2.html

このあたり、後継バージョンで多少改善されたもののと、仕様変更に伴い、
.NET 4 と .NET 4.5 とでは異なる回避コードが必要という事態にも陥っています。
https://qiita.com/Chrowa3/items/f60dc28dbcc6bd48a3b7

他にも、特定のサイズのファイルを添付できないとか、
https://social.msdn.microsoft.com/Forums/ja-JP/dc4ecc61-db8f-4567-8576-612aea6f2469/
メールの from: は複数のアドレスを設定できるはずなのに、対応できてないとか…。
http://takagi-hiromitsu.jp/diary/20040919.html



一応、nuget 等で MailKit/MimeKit を導入すれば、そうした細かい点にまで
対応できるようになります。メールの送信ログなどを記録する機能もあるので、
業務利用ならお薦め。比較的痒いところにも手が届きます。
https://www.infoq.com/jp/news/2017/04/MailKit-MimeKit-Official

とはいえ、多機能になる分、使い方が異なってしまうので、
そのまま置き換えとはならないのですが…。