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 に答える