首页 > 解决方案 > 使用相同的 SMTP (C#) 发送电子邮件和传真时出错

问题描述

我目前正在研究一个从一些预定义设置自动生成文本的例程,并且应该以电子邮件或传真的形式发送该文本 - 甚至两者兼而有之。

代码如下所示:

SmtpClient smtp = new SmtpClient(Properties.Settings.Default.SmtpServer)
{
    UseDefaultCredentials = true
};

if (IsMail)
{
    var sendMail = "current users email";
    using (MailMessage mm = new MailMessage(sendMail, this.EmailAddress))
    {
    mm.Subject = this.Subject;
    if (!string.IsNullOrEmpty(this.MailBody))
    {
        mm.Body = this.MailBody.Replace("\n\n", "<br><br>");
        mm.IsBodyHtml = true;
    }

    if (this.IsCcMail)
        mm.CC.Add(sendMail);

    foreach (var a in Attachments)
        mm.Attachments.Add(a);

    smtp.Send(mm);
    }   
}

if (IsFax)
{
    var formatedFaxNo = this.CountryPhoneCode + FaxNo.TrimStart('0');
    using (MailMessage mm = new MailMessage("current users email", formatedFaxNo + "@fax"))
    {
        mm.Subject = this.Subject;
        if (!string.IsNullOrEmpty(this.MailBody))
        {
            mm.Body = this.MailBody.Replace("\n\n", "<br><br>");
            mm.IsBodyHtml = true;
        }
        if (IsCcFax)
            mm.CC.Add("current users fax" + "@fax");

        if (ShowMessageYesNo(Translator.WouldYouLikeToSendTheFaxWithACoverSheet) != System.Windows.MessageBoxResult.Yes)
            mm.Headers.Add("EMPTYBODYTEXT", "1");
        else
        {
            var faxBody = Properties.Resources.FaxTemplate.ToString();
            mm.Body = string.Format(faxBody,
            Translator.Fax, formatedFaxNo,
            Translator.From, "current users name",
            Translator.Subject, this.Subject,
            Translator.Date, DateTime.Now.ToShortDateString(),
            this.MailBody?.Replace("\n\n","<br><br>"));
        }
        foreach (var a in Attachments)
            mm.Attachments.Add(a);

        smtp.Send(mm);
    }
}

如果我想同时发送电子邮件和传真,则在应该发送传真时出现 SMTP 异常 - 电子邮件之前已成功发送。错误只读取

“发送邮件错误”

这不是很有帮助。

到目前为止,我已经尝试过:发送两封邮件而不是邮件和传真 - 按预期工作;同样发送两份传真 - 按预期工作;更改订单并在邮件之前发送传真 - 传真已发送,但发送邮件时出现 SMTP 异常;在发送邮件并为传真创建新邮件后处理 SmtpClient - 不会改变任何内容;

对我来说,我试图从中发送内容的 SMTP 服务器似乎存在问题,但我目前无法更改有关服务器的任何内容。

这里有没有人有任何进一步的建议我可以尝试解决这个问题?

标签: c#emailsmtpfax

解决方案


推荐阅读