Электронная почта от ASP.net идет как вложение HTML

Как следует из названия, я отправляю электронную почту из своего веб-приложения ASP.net без каких-либо вложений (пока), но, как ни странно, тело электронной почты представляет собой отдельный файл 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;
        }
    }

person Ahmed    schedule 23.06.2012    source источник


Ответы (1)


Не все клиенты могут правильно обрабатывать электронные письма в формате html. Например, Gmail может, а упомянутые вами порталы — нет. В этих случаях тело письма отправляется как вложение.

person Karlth    schedule 23.06.2012
comment
Хорошо... Должен ли я использовать mail.AlternateViews, чтобы добавить какую-то совместимость, чтобы избежать отправки отдельного HTML-файла? как и для порталов, он будет отображать только текстовое представление, а для gmail/hotmail он будет отображать HTML, достижимо ли это? Спасибо. - person Ahmed; 23.06.2012