标签: smtpclient

我的ASP.NET应用程序如何从web.config自动获取SMTP设置?

我注意到我们总是这样:

SmtpClient mSmtpClient = new SmtpClient();
// Send the mail message
mSmtpClient.Send(mMailMessage);
Run Code Online (Sandbox Code Playgroud)

并且设置凭据的唯一位置是web.config:

  <system.net>
    <mailSettings>
      <smtp>
        <network host="xxx.xx.xxx.229" userName="xxxxxxxx" password="xxxxxxxx"/>
      </smtp>
    </mailSettings>
  </system.net>
Run Code Online (Sandbox Code Playgroud)

所以我的问题是,它是如何自动地将它们排除的?

c# asp.net web-config smtpclient

12
推荐指数
1
解决办法
1万
查看次数

System.Net.Mail.SmtpException:SMTP服务器需要安全连接或客户端未经过身份验证

我正在尝试从C#应用程序发送带有我网站地址的电子邮件.
直到最近,这个工作好几个月.(也许我的提供者改变了一些事情或其他人改变了设置)

这是代码:

  private void sendEmail(Email invite) {
            MailMessage mail = new MailMessage();
            SmtpClient SmtpServer = new SmtpClient(smtpServerName);
            mail.From = new MailAddress(emailUsername);

            mail.To.Add(invite.RecipientEmail);
            mail.Subject = invite.MessageSubject;
            mail.Body = invite.MessageBody;

            SmtpServer.UseDefaultCredentials = false;
            SmtpServer.Port = 587;
            SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);
//          SmtpServer.EnableSsl = true;
            SmtpServer.Send(mail);
        }  
Run Code Online (Sandbox Code Playgroud)

这是错误:

SMTP服务器需要安全连接或客户端未经过身份验证.服务器响应是:需要SMTP身份验证.

看看其他问题,我尝试了他们的建议SmtpServer.EnableSsl = true.这根本不起作用.它给出了以下内容:

System.Net.Mail.SmtpException:服务器不支持安全连接.

我猜我应该禁用SSL并按原样使用它.

有关如何重新发送电子邮件的建议吗?

编辑
我已经尝试过没有SmtpServer.UseDefaultCredentials = false;
我试过它设置为true:SmtpServer.UseDefaultCredentials =true;
我已经尝试评论该行以及以下内容//SmtpServer.Credentials = new System.Net.NetworkCredential(emailUsername, emailPassword);

c# smtp smtpclient

12
推荐指数
3
解决办法
4万
查看次数

为什么smtpclient发送的电子邮件不会出现在已发送的项目中

我已经实现了一个通过.Net SmtpClient发送电子邮件的服务器.邮件发送代码如下:

private static MailMessage SendMail(string to, string subject, string body)
{
 MailMessage mailToSend = new MailMessage();
 mailToSend.Body = body;
 mailToSend.Subject = subject;
 mailToSend.IsBodyHtml = true;
 mailToSend.To.Add(to);
 try
 {
  mailClient.Send(mailToSend);
 }
 catch (Exception ex)
 {
  //Log data...
 }
 mailToSend.Dispose();
}
Run Code Online (Sandbox Code Playgroud)

在Web.config我已经把邮件的凭据,像这样:

<configuration>
  <system.net>
    <mailSettings>
      <smtp from="autoemail@mailserver.org">
        <network host="smtp.mailserver.org" password="pswdpswd" port="25" userName="autoemail" clientDomain="the-domain" enableSsl="true" />
      </smtp>
    </mailSettings>
  </system.net>
</configuration>
Run Code Online (Sandbox Code Playgroud)

电子邮件成功发送,一切正常,但当我登录交换服务器中的电子邮件用户时(例如通过Outlook Web-App)我看不到通过SmtpClient发送的邮件(通过代码)发送的项目夹.

如何在此文件夹中保留已发送邮件的副本?谢谢!

.net c# email exchange-server smtpclient

12
推荐指数
1
解决办法
1万
查看次数

将已发送的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);
}
Run Code Online (Sandbox Code Playgroud)

是否有我缺少的配置,以确保我发送的所有来自"fromaddress@blah.com"的电子邮件都到达他们的已发送文件夹?

c# exchange-server smtpclient mailmessage

11
推荐指数
2
解决办法
2万
查看次数

11
推荐指数
3
解决办法
3万
查看次数

服务器超时后,c#中的电子邮件发送服务无法恢复

几个月来我一直有这个问题,这让我疯了.我有一个用C#(.NET 4.5)编写的Windows服务,它基本上使用Outlook帐户发送电子邮件(我认为它是一个office365服务).我知道"凭证顺序"问题,这对我没有影响(许多电子邮件发送正确).

该服务正确启动并开始发送电子邮件.有时当有太多时,我得到服务器错误等待,服务等待几分钟并继续完全自己.

在这些情况下,我得到错误A:

 System.Net.Mail.SmtpException: The operation has timed out.
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at Cobranzas.WinService.Email.SendEmail(String subject, String body, String mailTo, String attPath)
   at Cobranzas.WinService.CobranzasEmailService.SendEmails(IEnumerable`1 toSend, RepositoryEf emailRepo)
Run Code Online (Sandbox Code Playgroud)

问题:有时,我无法找到模式,它每隔几天发生一次,它会出现超时错误,并且永远不会恢复(重新启动服务会立即修复它).所有后续发送尝试都失败并出现相同的错误.在这种情况下,我混合了错误A和:

 System.Net.Mail.SmtpException: Failure sending mail. ---> System.Net.WebException: The operation has timed out.
   at System.Net.ConnectionPool.Get(Object owningObject, Int32 result, Boolean& continueLoop, WaitHandle[]& waitHandles)
   at System.Net.ConnectionPool.GetConnection(Object owningObject, GeneralAsyncDelegate asyncCallback, Int32 creationTimeout)
   at System.Net.Mail.SmtpConnection.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpTransport.GetConnection(ServicePoint servicePoint)
   at System.Net.Mail.SmtpClient.GetConnection()
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   --- End of inner exception stack trace ---
   at System.Net.Mail.SmtpClient.Send(MailMessage message)
   at …
Run Code Online (Sandbox Code Playgroud)

c# email smtpclient .net-4.5

11
推荐指数
1
解决办法
2296
查看次数

在ASP .NET MVC 6项目中使用System.Net.Mail

我在ASP NET 5项目中创建一个简单的模拟邮件发件人时遇到了麻烦.

这里的方法:

    public static Task SendMail(string Email, string Subject, string Body)
    {
        SmtpClient client = new SmtpClient();
        client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;
        client.PickupDirectoryLocation = "C:\\TMP";

        MailAddress from = new MailAddress("jane@contoso.com", "Jane " + (char)0xD8 + " Clayton", System.Text.Encoding.UTF8);
        MailAddress to = new MailAddress(Email);

        MailMessage message = new MailMessage(from, to);
        message.Body = Body;
        message.BodyEncoding = System.Text.Encoding.UTF8;
        message.Subject = Subject;
        message.SubjectEncoding = System.Text.Encoding.UTF8;

        client.Send(message);
        message.Dispose();

        return Task.FromResult(0);
    }
Run Code Online (Sandbox Code Playgroud)

我已经包含了依赖项'System.Net.Mail',但工具提示说该库在DNX 4.5.1中可用,但在DNX Core 5.0中不可用,并且项目将无法编译.

在我的project.json中有:

"frameworks": {
    "dnx451": { },
    "dnxcore50": { }
}
Run Code Online (Sandbox Code Playgroud)

.net system.net.mail smtpclient asp.net-core-mvc mailkit

11
推荐指数
2
解决办法
4673
查看次数

使用SMTP作为IP地址发送邮件时,无法解析远程名称

MailMessage message = new MailMessage();
message.Subject = "test";
message.Body = "test";
message.To.Add("test@gmail.com");
message.From = new MailAddress("bob@internalhost.com");
SmtpClient smtp = new SmtpClient();
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.UseDefaultCredentials = false;
smtp.Host = "172.22.0.20";
smtp.Port = 25;
smtp.Send(message);
Run Code Online (Sandbox Code Playgroud)

知道为什么我可能会收到错误

无法解析远程名称.

显然,由于我已经指定了IP地址,因此无需解析.我可以在端口25上ping IP甚至telnet并成功发送电子邮件.但是,我无法发送电子邮件.

我跑了一个wireshark跟踪,看起来没有任何流量发送到172.22.0.20

.net c# windows smtpclient

11
推荐指数
2
解决办法
2万
查看次数

使用SmtpClient从Gmail发送电子邮件

我正在尝试连接到我的Gmail帐户,SmtpClient但似乎无法正常工作.我指定端口465,启用SSL并定义所有内容,但它需要2分钟,然后只显示一些错误消息未发送.

我在这做错了什么?

try
{
    MailMessage msg = new MailMessage();
    msg.From = new MailAddress("myemail@gmail.com);
    msg.To.Add(new MailAddress("theiremil@email.com));
    msg.Subject = "This is the subject";
    msg.Body = "This is the body";
    SmtpClient sc = new SmtpClient("smtp.gmail.com", 465);
    sc.EnableSsl = true;
    sc.UseDefaultCredentials = false;
    sc.Credentials = new NetworkCredential("myemail@gmail.com", "pass");
    sc.DeliveryMethod = SmtpDeliveryMethod.Network;
    sc.Send(msg);
    erroremail.Text = "Email has been sent successfully.";
}
catch (Exception ex)
{
    erroremail.Text = "ERROR: " + ex.Message;
}
Run Code Online (Sandbox Code Playgroud)

c# smtpclient

10
推荐指数
1
解决办法
2万
查看次数

更改电子邮件中自动附加文件的名称

我正在使用 Mailkit 库发送电子邮件。这是这样做的代码:

    public async Task SendAsync(IdentityMessage message)
    {
        if (message == null)
            return;

        LinkedResource inline = new LinkedResource(System.Web.Hosting.HostingEnvironment.MapPath($"~/Images/logo.png"))
        {
            ContentId = Guid.NewGuid().ToString(),
            ContentType = new ContentType("image/png")
            {
                Name = "logo.png"
            }
        };

        var htmlBody = message.Body.Replace("{CID:LOGO}", String.Format("cid:{0}", inline.ContentId));

        AlternateView avHtml = AlternateView.CreateAlternateViewFromString(htmlBody, null, MediaTypeNames.Text.Html);
        avHtml.LinkedResources.Add(inline);

        using (MailMessage objMailMsg = new MailMessage())
        {
            objMailMsg.AlternateViews.Add(avHtml);
            objMailMsg.Body = htmlBody;
            objMailMsg.Subject = message.Subject;
            objMailMsg.BodyEncoding = Encoding.UTF8;

            Properties.Settings.Default.Reload();

            string fromEmail = Properties.Settings.Default.FromMail;
            string fromName = Properties.Settings.Default.FromName;
            string smtpPassword = Properties.Settings.Default.PwdSmtp;

            objMailMsg.From = new MailAddress(fromEmail, …
Run Code Online (Sandbox Code Playgroud)

c# smtpclient email-attachments mailkit

10
推荐指数
1
解决办法
120
查看次数