如何在c#中使用smtp发送电子邮件?

时间:2017-08-16 09:12:51

标签: c# email smtpclient

我有一个数据库中的数据列表,我有数据库中的电子邮件ID,我必须发送电子邮件到那些ID,如果它的保留日期是明天意味着我必须发送一个推荐电子邮件作为提醒今天,我想要发送电子邮件,我将使用服务每天发送,但我的电子邮件部分不工作..我的代码是... ...

using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Threading.Tasks;


namespace SendingEmail
{
    public class SendingMail
    {
      public static void SendMail(string recipient, string subject, string 
      body, string attachmentFilename)
        {
           //method to send email 
           MailMessage mail = new MailMessage();
            try
            {
                SmtpClient SmtpServer = new SmtpClient("smtp.gmail.com", 587);
                SmtpServer.EnableSsl = true;
                SmtpServer.Credentials = new System.Net.NetworkCredential("myemail@gmail.com", "my password");
                string From = "my email@gmail.com";
                string To = "email.com";
                mail.Subject = "Test Mail - 1";
                mail.Body = "mail with attachment";
                MailMessage msg = new MailMessage(From, To);
                System.Net.Mail.Attachment attachment;
                attachment = new System.Net.Mail.Attachment
                (@"C:\Users\rahul.chakrabarty\Desktop\logg.txt");
                mail.Attachments.Add(attachment);
                SmtpServer.Send(mail);
            }
            //To cathch Exception
            catch (Exception ex)
            {
                Console.WriteLine("unable to send" + ex);
            }
        }
    }
}

我的错误是“无法发送systemystem.InvalidOperationException:必须指定来自地址”..这是我的错误

1 个答案:

答案 0 :(得分:1)

你说

String from = "my email@gmail...

但是你实际上没有将这个字符串分配给mail.From属性 - 你已经离开并使用该地址创建了一个新的MailMessage,并将其命名为msg:

MailMessage msg = new MailMessage(From, To)

但您没有发送msg邮件,而是发送了mail邮件:

SmtpServer.Send(mail);

mail变量

上的收件人地址存在同样的问题

基本上,代码都搞砸了:你制作两个MailMessage对象,在一个上设置一半必要的东西,在另一个上设置另一半必要的东西,然后尝试发送其中一个不完整的细节。这有点像你复制和粘贴两个不同的教程,但没有得到足够的任何一个,以获得完整的MailMessage准备发送

我可以为你修复这一切并发布工作代码,但我没有两个原因:1)你自己做这些小改动很容易,2)我希望你做这个学习锻炼而不仅仅是给你答案:)

确保您没有在电子邮件地址中添加空格