0

SOでこれを調査しましたが、本当に完全な答えを見つけることができませんでした。私を含む多くの人は、SSL を使用せずにポート 25 または 587 を使用して、C# System.Net.Mail 経由で電子メールを送信できます。たとえば、こちらを参照してください: https://stackoverflow.com/questions/1317809/sending-email-using-a-godaddy-account

他の人は System.Web.Mail を使用したソリューションを持っていますが、これは廃止されています: How can I send email through SSL SMTP with the .NET Framework?

ただし、ポート 465 で SSL を使用して電子メールを送信する方法については、まだ誰も解決策を持っていないようです。誰かが解決策を持っているか、少なくとも SSL が C# から機能しない理由を知っていますか?

私が使用しているコードは次のとおりです。

try
{
    MailMessage mail = new MailMessage("sender@yourdomain.com", receivingEmail, subject, body);
    string host = "smtpout.secureserver.net";
    int port = 465; // it's 465 if using SSL, otherwise 25 or 587
    SmtpClient smtpServer = new SmtpClient(host, port);
    smtpServer.Credentials = new NetworkCredential("sender@yourdomain.com", "yourpassword");
    smtpServer.EnableSsl = true;
    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtpServer.Send(mail);
}
catch (Exception ex)
{
    // do something with the exception
    ...
}
4

2 に答える 2

3

.NET 組み込みメール クラスは、必要な SSL メソッド (暗黙的 SSL) をサポートしていません。これとは何の関係もありません。その理由は、こちらで説明されています

明示的および暗黙的な SSL の両方を実行し、他の優れた機能を備えたサードパーティの SMTP クライアント コンポーネントが存在します。たとえば、Rebex.MailSecureBlackboxなどです。

于 2012-06-04T16:25:28.733 に答える
0

機能しない理由は、SmtpClient のアーキテクチャにあります。SmtpClient は、ssl ではなくプレーン テキストを使用して接続を確立するように設計されています。

ただし、native.net を使用して送信者を書き直すことができます。

[Aegis Implicit Mail (AIM)] ( http://netimplicitssl.sourceforge.net/ )を見てみてください。これはオープン ソースであり、コード スタイルとアーキテクチャは System.Net.Mail とまったく同じです。

465 (暗黙の「SSL」) およびその他のポート (明示的な「TLS」) の詳細については、[こちら] ( https://sourceforge.net/p/netimplicitssl/wiki/Home/ )を参照してください。

あなたは次のようになります:

try
{
    MimeMailMessage mail = new MailMessage("sender@yourdomain.com", receivingEmail, subject, body);

   string host = "smtpout.secureserver.net";
    int port = 465; // it's 465 if using SSL, otherwise 25 or 587
    MimeMailer smtpServer = new MimeMailer(host, port);
    smtpServer.Credentials = new NetworkCredential("sender@yourdomain.com", "yourpassword");
    smtpServer.EnableSsl = true;
    smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
    smtpServer.Send(mail);
}
 catch (Exception ex)
{
    // do something with the exception
    ...
}
于 2014-09-24T10:11:20.147 に答える