6

当我从我的网站向 Uniform http://co.za注册商发送电子邮件并在邮件中抄送自己时,我收到一封来自他们的电子邮件,表明他们收到了电子邮件,但由于其中包含那些有趣的字符而无法找到某些信息添加到它。我看到网站上有一篇以前的帖子,但似乎没有一个答案对我有用,我在谷歌上尝试了很多帖子和博客。

电子邮件的整个正文由您从注册商网站获得的模板构成,我使用 etc 作为我需要填充和替换的详细信息,然后将电子邮件正文发送给注册商。

EX: 
1a. Complete domain name: < domainname >
gets replaces with the domain name exmaple.co.za

我的代码:

    MailMessage emailmsg = new MailMessage("myemail@domain.co.za", "coza-admin@co.za");
            emailmsg.Subject = "N domain domain.co.za";
            emailmsg.Bcc.Add("myemail@domain.co.za");
            emailmsg.Body = Body;
            emailmsg.IsBodyHtml = false;

            var plainView = AlternateView.CreateAlternateViewFromString(Body, new     ContentType("text/plain; charset=iso-8859-1"));
            plainView.TransferEncoding = TransferEncoding.SevenBit;
            emailmsg.AlternateViews.Add(plainView);

            SmtpClient sSmtp = new SmtpClient();
            sSmtp.Send(emailmsg);

这段代码向我自己发送了一份密件抄送副本,从外观上看,一切似乎都很好,我应该是这样,但是当他们收到它时,字符就会被添加。似乎是随机添加这些字符。那么显然请求失败,因为找不到秒名称服务器。

退回的电子邮件:

Administrative Info
Contact:   Administrator=0D=0A 4b. Title/posi=   (Administrator)
Company:   CompanyName Ltd
Postal:    P.O Box 12841, Centrahill, 6006
Phone:     +27.00000000=0D=0A  4f. Fax Number: +27.00000000=

Provided Nameserver information
Primary Server  : ns1.nameserver.co.za 
Secondary 1     : ns2.nameserver.co.za=0d=0a,

任何帮助,将不胜感激。

注意:注册商要求电子邮件采用纯文本格式,而不是 base64 或 html,因为他们的系统会接收纯文本电子邮件和传真并自动处理它们。

谢谢

4

2 回答 2

5

我想通了,将我的代码更改为以下内容:

MailMessage emailmsg = new MailMessage("from@address.co.za", "to@address.co.za")
emailmsg.Subject = "Subject";
emailmsg.IsBodyHtml = false;
emailmsg.ReplyToList.Add("from@address.co.za");
emailmsg.BodyEncoding = System.Text.Encoding.UTF8;
emailmsg.HeadersEncoding = System.Text.Encoding.UTF8;
emailmsg.SubjectEncoding = System.Text.Encoding.UTF8;
emailmsg.Body = null;

var plainView = AlternateView.CreateAlternateViewFromString(EmailBody, emailmsg.BodyEncoding, "text/plain");
plainView.TransferEncoding = TransferEncoding.SevenBit;
emailmsg.AlternateViews.Add(plainView);

SmtpClient sSmtp = new SmtpClient();
sSmtp.Send(emailmsg);

所有字符空间都保留在电子邮件模板中。希望这也会对某人有所帮助。

于 2011-11-16T14:44:40.547 回答
5

=OD=OA 是 CrLf 的引用可打印表示。

如果你想使用 iso-8859-1 字符集,那么你需要去掉这一行:

plainView.TransferEncoding = TransferEncoding.SevenBit;

如果您坚持使用 7 位编码,那么您的电子邮件中只能使用 ASCII 字符,因此将 is0-8859-1 字符集更改为“us-ascii”

于 2011-11-09T13:43:36.580 回答