0

正如标题所说,我正在从我的 ASP.net Web 应用程序发送电子邮件,没有任何附件(目前),但奇怪的是,电子邮件正文作为一个单独的 HTML 文件附加到空白电子邮件,就像我单击它打开的 HTML 文件一样正文在单独的窗口中,我在正文中作为独立的 HTML 文件编写的所有内容,只有当我将电子邮件发送到 e-lance 等门户网站时才会发生这种情况,但是当我将其发送到 gmail 或 hotmail 地址时,电子邮件会完美无附件和正文出现在它应该出现的地方。

我的电子邮件代码是

    public bool sendMail(string messageSubject, System.Net.Mail.MailAddress fromEmailAddress, System.Net.Mail.MailAddress toEmailAddress, string source_id, string messageText)
    {
        System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
        mail.IsBodyHtml = true;
        mail.Subject = messageSubject;
        mail.From = fromEmailAddress;
        mail.To.Add(toEmailAddress);
        mail.Body = messageText;

        SmtpClient relayServer = new SmtpClient();

        List<KeyValuePair<string, string>> commandParameters = new List<KeyValuePair<string,string>>();
        commandParameters.Add(new KeyValuePair<string,string>("@source_id", source_id));
        DataTable sourcesTable = SQLSelect("SELECT * FROM LogiCrmSources WHERE source_id = @source_id", commandParameters);

        relayServer.Host = sourcesTable.Rows[0]["source_smtp"].ToString();
        relayServer.Port = Convert.ToInt16(sourcesTable.Rows[0]["source_smtp_port"].ToString());
        if (relayServer.Port == 25)
        {
            relayServer.EnableSsl = false;
        }
        else
        {
            relayServer.EnableSsl = true;
        }
        relayServer.Credentials = new System.Net.NetworkCredential(sourcesTable.Rows[0]["source_email"].ToString(), sourcesTable.Rows[0]["source_password"].ToString());
        try
        {
            relayServer.Send(mail);                
            return true;
        }
        catch(SmtpFailedRecipientException exp)
        {
            return false;
        }
    }
4

1 回答 1

1

并非所有客户都能正确处理 html 电子邮件。例如,Gmail 可以,而您提到的门户网站则不能。在这些情况下,电子邮件的正文作为附件发送。

于 2012-06-23T07:24:35.650 回答