标签: smtpclient

使用Gmail的SmtpClient

我正在为学校项目开发一个邮件客户端.我已经设法使用SmtpClientC#发送电子邮件.这适用于任何服务器,但它不适用于Gmail.我相信这是因为谷歌使用TLS.我曾尝试设置EnableSsltrueSmtpClient,但这并不有所作为.

这是我用来创建SmtpClient和发送电子邮件的代码.

this.client = new SmtpClient("smtp.gmail.com", 587);
this.client.EnableSsl = true;
this.client.UseDefaultCredentials = false;
this.client.Credentials = new NetworkCredential("username", "password");

try
{
    // Create instance of message
    MailMessage message = new MailMessage();

    // Add receiver
    message.To.Add("myemail@mydomain.com");

    // Set sender
    // In this case the same as the username
    message.From = new MailAddress("username@gmail.com");

    // Set subject
    message.Subject = "Test";

    // Set body of message
    message.Body = "En test besked";

    // Send the message …
Run Code Online (Sandbox Code Playgroud)

c# mono gmail smtpclient monodevelop

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

System.Net.Mail创建无效的电子邮件和eml文件?在主机名中插入额外的点

如果点出现在MIME编码行的开头(例如test.com有时显示为test..com),.NET的SmtpClient似乎正在创建主机名中带有额外点的电子邮件.示例代码:

[TestMethod]
public void TestEmailIssue()
{
    var mail = new System.Net.Mail.MailMessage();
    var smtpClient = new System.Net.Mail.SmtpClient();

    mail.To.Add("Test@test.com");
    mail.Subject = "Test";
    mail.From = new System.Net.Mail.MailAddress("test@test.com");
    mail.Body = "Hello this is  a short test of the issue:"
             +" <a href='https://test.com/'>https://test.com/</a>: ";

    smtpClient.PickupDirectoryLocation = "C:\\temp\\";
    smtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.SpecifiedPickupDirectory;
    smtpClient.Send(mail);
}
Run Code Online (Sandbox Code Playgroud)

这会创建一个如下所示的.eml文件:

X-Sender:test@test.com

X-Receiver:Test@test.com

MIME版本:1.0

来自:test@test.com

致:Test@test.com

日期:2011年7月6日15:55:28 -0400

主题:测试

内容类型:text/plain; 字符集= US-ASCII

Content-Transfer-Encoding:quoted-printable

您好,这是对该问题的简短测试:https:// test =

..com /'> https://test.com/:= 20

当发送文件,或开口在Outlook(或任何其他程序),双点显示(即test..com).请注意,如果我删除了额外的空格(在"是"中),则test.com会正确显示,因为该点不再出现在行的开头.

这在尝试发送网站地址时会出现问题,我们会收到来自客户的电话,说他们无法点击我们的链接.

还有其他人经历过这个吗?除了编写自己的编码之外,我们如何解决这个问题呢?

.net c# email smtpclient

29
推荐指数
1
解决办法
6692
查看次数

.NET 4.0失败发送附件大于3MB的电子邮件时

我最近将我的.net框架从3.5升级到4.0后出现问题:

System.Net.Mail.SmtpException:发送邮件失败.---> System.IndexOutOfRangeException:索引超出了数组的范围.在System.Net.Base64Stream.EncodeBytes(Byte [] buffer,Int32 offset,Int32 count,Boolean dontDeferFinalBytes,Boolean shouldAppendSpaceToCRLF)System.Net.Base64Stream.Write(Byte [] buffer,Int32 offset,Int32 count)at System.Net System.Net.Mail.SmtpClient上的System.Net.Mail.Message.Send(BaseWriter writer,Boolean sendEnvelope)上的System.Net.Mime.MimeMultiPart.Send(BaseWriter writer)中的.Mime.MimePart.Send(BaseWriter writer).发送(MailMessage消息)---内部异常堆栈跟踪结束---

我在这里阅读了这个连接错误列表:http://connect.microsoft.com/VisualStudio/feedback/details/544562/cannot-send-e-mails-with-large-attachments-system-net-mail-smtpclient-system- net-mail-mailmessage.

如果有人关心这个问题,请在Connect上投票,所以它会尽快修复.

.net .net-4.0 smtpclient

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

如何在Web.config中为SmtpClient启用SSL

有没有办法从web.config设置EnableSSL?

我可以在代码中设置此属性,但这对于简单邮件Web事件和使用默认Smtp服务器的其他类不起作用.有任何想法吗?

.net asp.net web-config smtpclient

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

Asp.Net Identity 2.0 - 如何使用SmtpClient实现IIdentityMessageService来执行异步SMTP?

我已经为Asp.Net Identity 2.0实现了一个简单的EmailService(通过IIdentityMessageService界面.

    public class EmailService : IIdentityMessageService
{
    public Task SendAsync(IdentityMessage message)
    {
        // convert IdentityMessage to a MailMessage
        var email = 
           new MailMessage(new MailAddress("noreply@mydomain.com", "(do not reply)"), 
           new MailAddress(message.Destination))
        {
            Subject = message.Subject,
            Body = message.Body,
            IsBodyHtml = true
        };

        using (var client = new SmtpClient()) // SmtpClient configuration comes from config file
        {
            return client.SendMailAsync(email);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

要发送电子邮件,我将通过UserManager:

await _userManager.SendEmailAsync(user.Id, "Confirm your account","Please confirm your account by clicking this link: <a href=\"" + callbackUrl …

c# smtpclient asp.net-identity

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

SmtpClient.SendAsync阻止我的ASP.NET MVC请求

我有一个发送简单电子邮件的动作:

    [HttpPost, ActionName("Index")]
    public ActionResult IndexPost(ContactForm contactForm)
    {
        if (ModelState.IsValid)
        {
            new EmailService().SendAsync(contactForm.Email, contactForm.Name, contactForm.Subject, contactForm.Body, true);

            return RedirectToAction(MVC.Contact.Success());
        }
        return View(contactForm);
    }
Run Code Online (Sandbox Code Playgroud)

和电子邮件服务:

    public void SendAsync(string fromEmail, string fromName, string subject, string body, bool isBodyHtml)
    {
        MailMessage mailMessage....
        ....
        SmtpClient client = new SmtpClient(settingRepository.SmtpAddress, settingRepository.SmtpPort);

        client.EnableSsl = settingRepository.SmtpSsl;
        client.Credentials = new NetworkCredential(settingRepository.SmtpUserName, settingRepository.SmtpPassword);
        client.SendCompleted += client_SendCompleted;
        client.SendAsync(mailMessage, Tuple.Create(client, mailMessage));
    }

    private void client_SendCompleted(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
    {
        Tuple<SmtpClient, MailMessage> data = (Tuple<SmtpClient, MailMessage>)e.UserState;
        data.Item1.Dispose();
        data.Item2.Dispose();

        if (e.Error != null) …
Run Code Online (Sandbox Code Playgroud)

email smtp smtpclient asp.net-mvc-3

23
推荐指数
2
解决办法
7329
查看次数

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

我正在尝试使用SmtpClient在.NET中编写通知服务(用于完全合法的非垃圾邮件目的).最初我只是通过每个消息循环并发送它,但这很慢,我想提高速度.所以,我切换到使用'SendAsync',但现在第二次调用时出现以下错误:

An asynchronous call is already in progress. 
Run Code Online (Sandbox Code Playgroud)

我读到这意味着MS瘫痪System.Net.Mail以防止群发邮件.它是否正确?如果是这样,有没有更好的方法在.NET中执行此操作,并且仍然能够记录每封电子邮件的结果(这对我们的客户来说很重要).如果没有,为什么SendAsync只能被调用一次?

c# system.net.mail smtpclient

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

SmtpClient:连接尝试失败,因为连接方在一段时间后没有正确响应

在Visual Studio 2008中使用C#.NET中的电子邮件发送时,我收到以下错误

连接尝试失败,因为连接方在一段时间后没有正确响应,或者建立的连接失败,因为连接的主机无法响应74.125.53.108:25

但是相同的代码在其他一些PC上工作得很好,但是当我今天测试时它给了我Send()方法错误...我的网络连接也很好,我正在测试电子邮件代码..

以下是我的电子邮件代码

MailMessage mail = new MailMessage();
mail.To.Add(to);
mail.From = new MailAddress(from);
mail.Subject = subject;
mail.Body = body;
mail.IsBodyHtml = true;
SmtpClient smtp = new SmtpClient();
smtp.Host = "smtp.gmail.com";
smtp.Credentials = new System.Net.NetworkCredential("MyUserName@gmail.com",
                                                            "MyPassword");
smtp.EnableSsl = true;
smtp.Send(mail);
Run Code Online (Sandbox Code Playgroud)

可能是这种错误的原因.. ???

c# email gmail smtpclient

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

我可以在调用client.Send()之前测试SmtpClient吗?

这与我前几天询问如何发送电子邮件的问题有关.

我的新相关问题就是这个...如果我的应用程序的用户是在防火墙后面或者为什么行client.Send(mail)将无法工作...

线后:

SmtpClient client = new SmtpClient("mysmtpserver.com", myportID);
client.Credentials = new System.Net.NetworkCredential("myusername.com", "mypassword");
Run Code Online (Sandbox Code Playgroud)

在尝试发送之前,我可以做些什么来测试客户端?

我想把它放在try/catch循环中,但我宁愿做一个测试,然后弹出一个对话框说:无法访问smtp或类似的东西.

(我假设我和我的应用程序用户都没有能力调整他们的防火墙设置.例如......他们在工作时安装应用程序并且无法控制他们的互联网工作)

-Adeena

c# email smtpclient

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

使用.net中的SmtpClient发送邮件

我无法使用smtp客户端发送邮件.这是代码:

SmtpClient client=new SmtpClient("Host");
client.Credentials=new NetworkCredential("username", "password");
MailMessage mailMessage = new MailMessage();
mailMessage.from="sender@gmail.com";
mailMessage.To.Add("recipient@gmail.com");
mailMessage.body="body";
mailMessage.subject="subject";
client.Send(mailMessage);
Run Code Online (Sandbox Code Playgroud)

问题是,当我在ASP.NET应用程序中使用此代码时,我不会收到任何邮件.在asp.net中,我将从邮件地址更改为NetworkCredential中给出的用户名,我收到邮件.

但是在C#windows应用程序中,即使发件人的电子邮件地址无效,我也可以收到电子邮件.

.net c# asp.net smtpclient

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