通过 System.Net.Mail C# 发送邮件时出现问题

发布于 2024-07-14 15:08:00 字数 908 浏览 7 评论 0原文

这是我的邮件发送代码。 我收到“邮件标题中存在无效字符”错误。当我更改计算机名称时,使用了一些最短的名称。 问题解决了。 但在我的域中,整个计算机名称如“04500-ab04545.xxxdomain.gov.tr”,所以我需要找到另一个解决方案来解决这个问题。

因此,我在从 C# 代码发送邮件时无法给出静态计算机名称。

 MailMessage msg = new MailMessage();
 msg.Body = "axxxxxx";
 msg.To.Add(new MailAddress("[email protected]"));
 msg.From = new MailAddress("[email protected]","blab blalb");
 msg.Subject = "Subject xxx";
 SmtpClient server = new SmtpClient("xxxxxxxx",25);
 server.Credentials = new NetworkCredential("xxxxx", "xxxxxxx");
 SmtpClient server = new SmtpClient("mail.adalet.gov.tr",25);
 server.Credentials = new NetworkCredential("xxx", "xxx");
 server.Send(msg);

This is my mail sending code. I was getting "There is Invalid character in Mail Header" error.When i changed my Computer Name some shortest name. The problem solved. But in my domain whole computer names like "04500-ab04545.xxxdomain.gov.tr" so I need to find another solution for this problem.

So I cant give a static computer name while sending mail from c# code.

 MailMessage msg = new MailMessage();
 msg.Body = "axxxxxx";
 msg.To.Add(new MailAddress("[email protected]"));
 msg.From = new MailAddress("[email protected]","blab blalb");
 msg.Subject = "Subject xxx";
 SmtpClient server = new SmtpClient("xxxxxxxx",25);
 server.Credentials = new NetworkCredential("xxxxx", "xxxxxxx");
 SmtpClient server = new SmtpClient("mail.adalet.gov.tr",25);
 server.Credentials = new NetworkCredential("xxx", "xxx");
 server.Send(msg);

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

伊面 2024-07-21 15:08:00

我怀疑这可能是与编码相关的问题。

尝试使用 new MailAddress("[电子邮件受保护]", "blab blalb", Encoding.Default) 构造函数。

或者尝试Encoding.Unicode

更新:

经过一番挖掘,此异常是从以下位置抛出的:

void System.Net.BufferBuilder.Append(string,int,int);

如果电子邮件地址中的 \xff 上方有任何字符,则会发生这种情况。 这不应该发生,因为名称应该已经被编码,但我猜还有其他事情变得有趣。

I suspect this might be an Encoding related issue.

Try using the new MailAddress("[email protected]","blab blalb", Encoding.Default) constructor.

Else try Encoding.Unicode.

Update:

After some digging, this exception is thrown from:

void System.Net.BufferBuilder.Append(string,int,int);

This will happen if you have any characters above \xff in the email address. This is not suppose to happen, as the name should be encoded already, but something else is going funny I guess.

凑诗 2024-07-21 15:08:00

消息试图发送哪些标头?

您可以使用以下 MSDN 片段轻松转储:

string[] keys = message.Headers.AllKeys;
        Console.WriteLine("Headers");
        foreach (string s in keys)
        {
            Console.WriteLine("{0}:", s);
            Console.WriteLine("    {0}", message.Headers[s]);

What headers are the message trying to send with?

You can easily dump with this MSDN snippet:

string[] keys = message.Headers.AllKeys;
        Console.WriteLine("Headers");
        foreach (string s in keys)
        {
            Console.WriteLine("{0}:", s);
            Console.WriteLine("    {0}", message.Headers[s]);
云归处 2024-07-21 15:08:00

当我将其修改为“网络”时,我收到此错误 --- 然后错误得到解决。 (我的理解是 - 如果指定了 PickupDirectory 选项,标头 -encoding utf-8 (base64) 会给出错误)

希望有帮助

I received this error when if this is modified to "network" --- then error got resolved. ( My understanding is - Incase of specified pickupdirectory option, the header -encoding utf-8 (base64) was giving error )

Hope it helps

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文