【发布时间】:2017-11-02 06:57:27
【问题描述】:
所以我编写了一个简单的 C# WinForms 应用程序,它只有一个按钮控件,我将在每个月的 25 日单击它来通知我的用户支付他们的域订阅费用。我会把它做成一个windows服务,以便以后有时间时它可以自动运行。
我在这个 SO 帖子中从 @Tartori 那里得到了我的实现:Sending emails from a windows forms application,它按照我想要的方式工作。
一切都很好,但现在的问题是,当我将测试邮件发送到一个电子邮件地址时,我在 Outlook 上设置了相同的帐户,但现在当我通过网络使用 Gmail 查看相同的测试邮件时根据以下两个屏幕截图,不附加换行符:
请告诉我如何克服这个问题。我的代码如下:
private void btnSendMail_Click(object sender, EventArgs e)
{
MailAddress from = new MailAddress("user@domain.co.za", "Name Surname");
List<MailAddress> cc = new List<MailAddress>();
cc.Add(new MailAddress("user2@domain.co.za", "Name2 Surname2"));
string subjectText = "Friendly Domain Payment Reminder: " + DateTime.Now.ToShortDateString();
SendEmail(subjectText, from, cc);
}
protected void SendEmail(string _subject, MailAddress _from, List<MailAddress> _cc, List<MailAddress> _bcc = null)
{
string Text = "";
SmtpClient mailClient = new SmtpClient("mail.backlinkdesigns.co.za");
MailMessage msgMail;
Text = "Good day" + "</br>" + "</br>" + "I hope this message finds you well." msgMail = new MailMessage();
msgMail.From = _from;
MailAddress outlook= new MailAddress("user@domain.co.za", "User Surbname");
MailAddress gmailAccount = new MailAddress("user@gmail.com", "Name Surname");
msgMail.To.Add(outlook);
msgMail.To.Add(gmailAccount );
foreach (MailAddress addr in _cc)
{
msgMail.CC.Add(addr);
}
if (_bcc != null)
{
foreach (MailAddress addr in _bcc)
{
msgMail.Bcc.Add(addr);
}
}
msgMail.Subject = _subject;
msgMail.Body = Text;
msgMail.IsBodyHtml = true;
mailClient.Send(msgMail);
msgMail.Dispose();
List<MailAddress> countVar = new List<MailAddress>();
countVar.Add(outlook);
countVar.Add(gmailAccount );
var temp = countVar.Count;
MessageBox.Show("Your email has been successfully sent to " + temp + " users show below: " + "\n\n" + outlook+ "\n" + gmailAccount + "\n" + "\n\n" + "From: " + _from, "Message Status", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
}
更新:
下面附上 HTML Visualizer,当我使用 </br> 来证明我在代码中得到换行符时。它们在 Outlook 应用程序中显示良好,但在网络上却没有。请在发布解决方案之前尝试复制粘贴代码示例,因为 Environment.NewLine 不能解决问题。
【问题讨论】: