我对使用MailKit设置smtp时如何使用第三个参数感到困惑。
这是我到目前为止所拥有的:
document.querySelectorAll('ul li').forEach(function(element) {
element.addEventListener('click', function(e) {
if (e.target.classList.contains('clicked')) return;
//your code here...
e.target.classList.add('clicked');
});
});
我的困惑是在这条线上:
// *************** SEND EMAIL *******************
using (var client = new MailKit.Net.Smtp.SmtpClient(new ProtocolLogger("smtp.log")))
{
client.SslProtocols = System.Security.Authentication.SslProtocols.Tls12;
//accept all SSL certificates
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// client.Connect(emailSettings.SmtpServer, emailSettings.SmtpPort, emailSettings.IsSslEnabled);
client.Connect(emailSettings.SmtpServer, emailSettings.SmtpPort, emailSettings.AuthType);
if (emailSettings.IsAuthenticationRequired)
{
// Note: only needed if the SMTP server requires authentication
client.Authenticate(emailSettings.SmtpUsername, emailSettings.SmtpPassword);
}
if (emailSettings.TimeOut == 0) emailSettings.TimeOut = 10;
client.Timeout = emailSettings.TimeOut * 1000;
client.Send(message);
client.Disconnect(true);
}
我可以选择传递true / false或SecureSockOptions。
这是我的表格上的内容
我不确定我是否了解这两种不同的设置如何影响电子邮件的发送。我假设我对useSsl或SecureSockOptions使用true / false?我不确定这些如何协同工作。
SecureSockOptions的选项为:
没有自动SslOnConnect StartTls StartTlsWhenAvailable
这些选项是否消除了对useSsl的需求?
答案 0 :(得分:0)
useSsl
是SecureSocketOptions
的简化版本。
当您将true
的{{1}}传递给useSsl
时。
当您将SecureSocketOptions.SslOnConnect
的{{1}}传递给false
时。
答案 1 :(得分:0)
查看mailkit文档的Connect方法具有5个不同的签名(不同的参数)
在将boolean传递给Connect的情况下,这意味着如果为true,则使用ssl;如果为false,则不要使用ssl。没有可以同时接受boolean和SecureSocketOptions的方法。
http://www.mimekit.net/docs/html/Overload_MailKit_Net_Smtp_SmtpClient_Connect.htm
您应该在上面的链接上阅读其文档。
这在他们的文档中也可能有用:
useSsl参数仅控制客户端是否进行 SSL包装的连接。换句话说,即使useSsl参数 为假,如果邮件服务器支持SSL / TLS,则仍可以使用SSL / TLS STARTTLS扩展名。
要禁用所有对SSL / TLS的使用,请使用Connect(String,Int32, SecureSocketOptions,CancellationToken)重载,值为 SecureSocketOptions。无。
答案 2 :(得分:0)
当您具有受信任的内部网络域控制器类型或受信任的框时,也应该使用它,当您保护传输(无窃听)时,默认情况下,即使您将其编码并且读为false,大多数邮件服务器也会使用它可能具有系统包装,这是由于OSI模型的级别较低,因此系统本身将其覆盖。我建议您在可能的情况下亲自使用它,以解决一些因手动应答请求而导致的较旧的传输模型丢失的情况,如果我没记错的话,它具有较高的请求超时值。