我无法理解为什么这段代码不起作用.我收到一条错误消息,指出无法分配属性
MailMessage mail = new MailMessage();
SmtpClient client = new SmtpClient();
client.Port = 25;
client.DeliveryMethod = SmtpDeliveryMethod.Network;
client.UseDefaultCredentials = false;
client.Host = "smtp.gmail.com";
mail.To = "user@hotmail.com"; // <-- this one
mail.From = "you@yourcompany.com";
mail.Subject = "this is a test email.";
mail.Body = "this is my test email body";
client.Send(mail);
Run Code Online (Sandbox Code Playgroud) 我看到构造函数的不同版本,一个使用来自web.config的信息,一个指定主机,一个指定主机和端口.但是如何将用户名和密码设置为与web.config不同的名称?我们有一个问题,我们的内部smtp被一些高安全性客户端阻止,我们想使用他们的smtp服务器,有没有办法从代码而不是web.config执行此操作?
在这种情况下,如果没有可用的数据库,我将如何使用web.config凭据?
public static void CreateTestMessage1(string server, int port)
{
string to = "jane@contoso.com";
string from = "ben@contoso.com";
string subject = "Using the new SMTP client.";
string body = @"Using this new feature, you can send an e-mail message from an application very easily.";
MailMessage message = new MailMessage(from, to, subject, body);
SmtpClient client = new SmtpClient(server, port);
// Credentials are necessary if the server requires the client
// to authenticate before it will send e-mail on the client's behalf. …
Run Code Online (Sandbox Code Playgroud) 我对如何管理SmtpClient感到有点困惑,因为它是一次性的,特别是如果我使用SendAsync进行调用.据推测,在SendAsync完成之前,我不应该调用Dispose.但我应该打电话给它(例如,使用"使用").该方案是一个WCF服务,它在发出呼叫时定期发送电子邮件.大多数计算速度很快,但发送电子邮件可能需要一秒左右的时间,所以Async会更好.
我每次发邮件时都应该创建一个新的SmtpClient吗?我应该为整个WCF创建一个吗?救命!
更新如果它有所不同,则始终为用户自定义每封电子邮件.WCF托管在Azure上,Gmail用作邮件程序.
我正在使用我的Gmail帐户并smtp.gmail.com
在我的网络应用程序中测试和发送电子邮件.当我的Gmail帐户启用双因素身份验证时,它无法发送电子邮件,但是当我关闭我的Gmail帐户的双因素身份验证时,该网络应用程序会成功发送电子邮件.感谢任何建议.
如何发送HTML电子邮件?我使用此答案中的代码发送电子邮件SmtpClient
,但它们始终是纯文本,因此下面示例消息中的链接不是这样格式化的.
<p>Welcome to SiteName. To activate your account, visit this URL: <a href="http://SiteName.com/a?key=1234">http://SiteName.com/a?key=1234</a>.</p>
Run Code Online (Sandbox Code Playgroud)
如何在我发送的电子邮件中启用HTML?
我使用我的Gmail帐户发送电子邮件时遇到问题.我把头发拉了出来.
相同的设置在Thunderbird中运行良好.
这是代码.我也试过没有运气的465端口.
SmtpClient ss = new SmtpClient("smtp.gmail.com", 587);
ss.Credentials = new NetworkCredential("username", "pass");
ss.EnableSsl = true;
ss.Timeout = 10000;
ss.DeliveryMethod = SmtpDeliveryMethod.Network;
ss.UseDefaultCredentials = false;
MailMessage mm = new MailMessage("donotreply@domain.com", "destination@domain.com", "subject here", "my body");
mm.BodyEncoding = UTF8Encoding.UTF8;
mm.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
ss.Send(mm);
Run Code Online (Sandbox Code Playgroud)
这是错误
"SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应为:5.5.1需要身份验证.了解详情"
下面是堆栈跟踪
at System.Net.Mail.MailCommand.CheckResponse(SmtpStatusCode statusCode, String response)
at System.Net.Mail.MailCommand.Send(SmtpConnection conn, Byte[] command, String from)
at System.Net.Mail.SmtpTransport.SendMail(MailAddress sender, MailAddressCollection recipients, String deliveryNotify, SmtpFailedRecipientException& exception)
at System.Net.Mail.SmtpClient.Send(MailMessage message)
at email_example.Program.Main(String[] args) in C:\Users\Vince\Documents\Visual Studio 2008\Projects\email example\email example\Program.cs:line 23 …
Run Code Online (Sandbox Code Playgroud) SmtpClient()允许您在邮件中添加附件,但是如果您想在邮件打开时显示图像而不是附加它,该怎么办?
我记得,它可以使用大约4行代码完成,但我不记得我在MSDN网站上找不到它.
编辑:我没有使用网站或任何东西,甚至没有IP地址.图像位于硬盘上.发送时,它们应该是邮件的一部分.所以,我想我可能想要使用标签......但我不太确定,因为我的电脑没有广播.
我有以下代码:
public static void Send(this MailMessage email)
{
if (!isInitialized)
Initialize(false);
//smtpClient.SendAsync(email, "");
email.IsBodyHtml = true;
Thread mailThread = new Thread(new ParameterizedThreadStart(
(o) =>
{
var m = o as MailMessage;
SmtpClient client= new SmtpClient("smtpserveraddress");
client.Send(m);
}));
mailThread.Start(email);
Run Code Online (Sandbox Code Playgroud)
我希望邮件发送在后台完成而不会干扰主线程.它完蛋后我不在乎.
我是否需要以某种方式处理已创建线程(mailThread)的处理?或者它在完成工作后会自动处理?
请不要推荐SendAsync方法.我想手动创建线程.Mail.Send只是一个示例场景.
谢谢.
有没有人知道我可以使用任何好的库来通过谷歌的SMTP从Haskell发送邮件?我发现SMTPClient
和HaskellNet
.前者不支持TLS
,后者似乎没有使用TLS通过SMTP发送电子邮件的示例.有人设法做到了吗?