Tag: smtpclient

发送2000封电子邮件

可以实例化一次SMTP客户端并同步发送2000封电子邮件吗? 当我们使用在此post末尾粘贴的代码为我们发送的每封邮件实例化SMTP客户端时,我们收到以下错误: System.Net.Mail.SmtpException:服务不可用,关闭传输通道。 服务器响应为:4.4.1连接超时 我怀疑为每条消息实例化SMTP客户端导致了这一点,但不确定。 代码如下。 List messages = GetMailMessages(); foreach( MailMessags m in messages) { try { SmtpClient client = new SmtpClient();//SHOULD THIS BE PLACED OUTSIDE AND BEFORE THE LOOP client.Send(m); } catch (Exception) { throw; } } 编辑1: 我刚刚在MSDN上找到了这个。 ( http://msdn.microsoft.com/en-us/library/ee706942%28v=vs.110%29.aspx )。 因此,当使用群发电子邮件时,您必须只实例化一次SMTP客户端并将其重新用于所有多个MailMessages。 如果应用程序希望将多个消息发送到同一SMTP服务器,则可以重新使用由SmtpClient类的当前实例建立到SMTP服务器的连接。 这是 在使用身份validation或加密时建立与SMTP服务器的连接时特别有用。 validation和建立TLS会话的过程可能是昂贵的操作。 在向同一SMTP服务器发送大量电子邮件时重新建立每条消息的连接的要求可能会对性能产生重大影响。 有许多高容量电子邮件应用程序可以发送电子邮件状态更新,简报分发或电子邮件警报。

使用SmtpClient,让“目标机器主动拒绝它”

我试图使用System.Net.Mail为应用程序发送电子邮件,但得到此exception: System.Net.Mail.SmtpException:发送邮件失败。 —> System.Net.WebException:无法连接到远程服务器—> System.Net.Sockets.SocketException:无法建立连接,因为目标计算机主动拒绝它198.238.39.170:25 我使用的代码是: string mailserver = “Scanmail.ofm.wa.lcl”; MailMessage msg = new MailMessage(“albert@einstein.net”, “snark@snarky.com”, “Very subjective”, “A message body!”); SmtpClient client = new SmtpClient(mailserver); client.Send(msg); 显然,上面的电子邮件地址是虚构的,但在实际代码中,它使用系统中的真实电子邮件地址。 邮件服务器地址准确无误。 我很想我需要在那里放置某种安全凭证,但不知道在哪里 – 尽管@ Andre_Calil的建议表明这不是问题,并且邮件服务器可能配置为阻止我的开发机器连接。 那怎么克服呢?

在Azure角色中使用SmtpClient时,“不支持请求的function”exception

我在Azure Web或Worker角色中使用SmtpClient时遇到exception。 我创建了一个控制台应用程序,通过RDP手动在角色VM上运行以重现: using System; using System.Net; using System.Net.Mail; using System.Text; namespace ConsoleApplication1 { class Program { static void Main() { var mailClient = new SmtpClient(“mail.redacted.com”, 587); mailClient.EnableSsl = true; mailClient.DeliveryFormat = SmtpDeliveryFormat.International; mailClient.DeliveryMethod = SmtpDeliveryMethod.Network; mailClient.UseDefaultCredentials = false;//SET THIS FIRST OR IT WIPES OUT CREDENTIALS NetworkCredential netCreds = new NetworkCredential(“mail@redacted.com”, “12345 same combination on […]

将已发送的MailMessage发送到“已发送文件夹”

我正在使用Exchange Server发送带有SmtpClient(正在成功发送)的MailMessages,但希望我发送的电子邮件转到我发送给他们的电子邮件地址的已发送文件夹(未发生)。 using (var mailMessage = new MailMessage(“fromaddress@blah.com”, “toaddress@blah.com”, “subject”, “body”)) { var smtpClient = new SmtpClient(“SmtpHost”) { EnableSsl = false, DeliveryMethod = SmtpDeliveryMethod.Network }; // Apply credentials smtpClient.Credentials = new NetworkCredential(“smtpUsername”, “smtpPassword”); // Send smtpClient.Send(mailMessage); } 是否有我缺少的配置,以确保我发送的所有来自“fromaddress@blah.com”的电子邮件都到达他们的已发送文件夹?

SendMailAsync:在异步操作仍处于挂起状态时完成的异步模块或处理程序

使用SendMailAsync我收到以下错误: 在异步操作仍处于挂起状态时完成异步模块或处理程序 我的代码: public static async Task SendEmail(MessageContent messageContent, string emailBody) { SmtpClient smtpClientNoSend = new SmtpClient(); await smtpClientNoSend.SendMailAsync(mailMessage); } 从控制器呼叫: public async System.Threading.Tasks.Task Register() { await SendEmail(); } private void SendEmail() { SMTPEmail.SendEmail(msg, output.ToString()); return null; }

两种通过SmtpClient异步发送电子邮件的方式,结果不同

这里简单的概念。 这适用于使用MVC 3和Entity Framework 4构建的站点。用户在站点上注册后,会向其电子邮件地址发送一封电子邮件。 我首先使用SmtpClient.Send()实现它,它工作正常。 然后我明白了尝试异步发送电子邮件。 我遇到了我尝试过的两种异步方法的问题。 首次实施(来自这篇未回答的post: https : //stackoverflow.com/questions/7558582/how-to-dispose-using-smtpclient-send-and-asynccallback ): public bool Emailer(){ . . . using (var smtpClient = new SmtpClient()) { smtpClient.EnableSsl = true; smtpClient.Host = “smtp.gmail.com”; smtpClient.Port = 587; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential(“myaddress@gmail.com”, “mypassword”); var sd = new SendEmailDelegate(smtpClient.Send); var cb = new AsyncCallback(SendEmailResponse); sd.BeginInvoke(message, cb, […]

通过SMTP客户端发送电子邮件时出错

这对你来说可能非常简单,但我无法弄清楚为什么我在运行代码时收到此错误消息。 我查看了同一网站上的一些相关问题,例如通过带有C#的Gmail SMTP服务器发送电子邮件,但没有一个是有帮助的。 有人愿意帮忙吗? 使用不同的组件也是可以接受的 所以如果有人得到一个可以理解的工作解决方案。 错误消息= SMTP服务器需要安全连接或客户端未经过身份validation。 服务器响应为:5.5.1需要身份validation。 了解更多信息 这是我的代码 System.Net.Mail.MailMessage message = new System.Net.Mail.MailMessage(); message.From = new MailAddress(“bob@googlemail.com”); message.To.Add(“bob@hotmail.com”); message.Subject = “Hello”; message.Body = “Hello Bob “; message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure; SmtpClient smtpClient = new SmtpClient(“smtp.gmail.com”, 587); smtpClient.EnableSsl = true; smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network; smtpClient.UseDefaultCredentials = false; smtpClient.Credentials = new NetworkCredential(“MyGoogleMailAccount”, “mygooglemailpassword”); smtpClient.Send(message.From.ToString(), message.To.ToString(), message.Subject, […]

为什么只能调用一次SmtpClient.SendAsync?

我正在尝试使用SmtpClient在.NET中编写通知服务(用于完全合法的非垃圾邮件目的)。 最初我只是通过每个消息循环并发送它,但这很慢,我想提高速度。 所以,我切换到使用’SendAsync’,但现在在第二次调用时收到以下错误: An asynchronous call is already in progress. 我读到这意味着MS瘫痪了System.Net.Mail以防止群发邮件。 它是否正确? 如果是这样,有没有更好的方法在.NET中执行此操作,并且仍然能够记录每封电子邮件的结果(这对我们的客户来说很重要)。 如果没有,为什么SendAsync只能被调用一次?

C#SMTP身份validation失败,但凭据正确无误

这是我的问题:我写了以下程序来测试我是否可以发送电子邮件: class Program { static void Main(string[] args) { try { Console.WriteLine(“Mail To”); MailAddress to = new MailAddress(“myemail@gmail.com”); Console.WriteLine(“Mail From”); MailAddress from = new MailAddress(“me@businessdomain.it”); MailMessage mail = new MailMessage(from, to); Console.WriteLine(“Subject”); mail.Subject = “test”; Console.WriteLine(“Your Message”); mail.Body = “test”; SmtpClient smtp = new SmtpClient(); smtp.Host = “mail.domain.it”; smtp.Port = 25; smtp.Credentials = new NetworkCredential( […]

在Unity WebGL构建中获取“system.net.sockets.socketexception没有这样的主机”

您好,感谢您抽出宝贵时间帮我解决问题。 我一直在Unity中处理一个小的webgl事情,它会在用户完成一些事情之后向用户发送电子邮件。 我把它全部构建好并准备好了,但是当我构建它并去测试它时,我发送了socketexception错误,在发送电子邮件时。 这是我用来发送电子邮件的代码 MailMessage mail = new MailMessage(); mail.From = new MailAddress(myEmail); mail.To.Add(userEmail.text); mail.Subject = “Thanks for viewing the Webcam page at WilliamLeonSmith.com”; mail.Body = “This is an automated email to deliver the attached images that were created at WilliamLeonSmith.com”; SmtpClient smtpServer = new SmtpClient(“smtp.gmail.com”); smtpServer.Port = 587; smtpServer.Credentials = new System.Net.NetworkCredential(myEmail, pass) as […]