gpt4 book ai didi

c# - 在不同的 smtp 端口上发送带有附件的电子邮件

转载 作者:行者123 更新时间:2023-11-30 13:02:29 25 4
gpt4 key购买 nike

我目前正在开发一个 c# 应用程序,我在其中制作自己的电子邮件服务器,用于监听包括附件数据在内的 SMTP 流量,然后找到 MX 记录的电子邮件地址并将其转发给收件人。

除了一个我不明白的奇怪问题外,一切都很好。

该问题仅影响在 Linux 下的 Mono 下运行 C# 程序,在 Windows 上一切正常。

问题是如果我的电子邮件服务器程序在端口 26 上运行(端口 25 已被使用),那么我的 Windows PC 上有一个测试 c# 程序,它发送一个文件。然后我获取附件数据成功将附件写入临时文件,重新创建附件对象并发送附件和消息。收到电子邮件后,电子邮件内容不再存在,附件名为 noname,如果我查看附件,它包含部分电子邮件标题和构成附件的 base 64 字符串。

但是,如果我随后将程序更改为在端口 25 上运行,一切都以完全相同的方式完成,但这次当电子邮件到达我的 gmail 帐户时,电子邮件与邮件正文完全一致并且具有正确名称和格式的附件。我不明白为什么在不同端口下的 linux 上运行我的程序会导致这个问题。我检查了工作和非工作之间的标题,一切似乎都很好。

这是单声道的问题吗?当我在 MX 记录上发送它时,我还尝试将 smtp 客户端的端口设置为端口 25,但没有任何不同。下面是我发送附件的方式。

FileStream fileStream = new FileStream(attachmentTempName, FileMode.Open, FileAccess.Read);
Attachment attachment = new Attachment(fileStream, attachments[0].realFileName, MediaTypeNames.Application.Octet);
message.Attachments.Add(attachment);
message.From = new MailAddress(emailInfo["EmailFrom"]);
message.To.Add(emailInfo["EmailTo"]);
message.Subject = emailInfo["Subject"];
if (emailInfo["Headers"] != "")
{
message.Headers.Add(getHeaders(emailInfo["Headers"]));
}
message.Body = emailInfo["Body"];
message.Body = "This is a test hardcoded";
if (emailInfo["EmailFormat"] == ManageEmail.EmailFormat.HTML.ToString())
{
message.IsBodyHtml = true;
}
else
{
message.IsBodyHtml = false;
}

SmtpClient smtp = new SmtpClient(mxRecords[0]);
smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
smtp.Port = 25;
smtp.Send(message);

感谢您提供的任何帮助。

最佳答案

@Boardy,

唯一引起我注意的是下面一行:

Attachment attachment = new Attachment(fileStream, attachments[0].realFileName, MediaTypeNames.Application.Octet);

附件构造函数的第二个参数应该是ContentType,而不是文件名。

 message.Attachments.Add(new Attachment(imageFile.InputStream, imageFile.ContentType, MediaTypeNames.Image.Jpeg));

有关更多信息,请点击此链接: C# Sending Email with attached file (image)

干杯。

关于c# - 在不同的 smtp 端口上发送带有附件的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15283977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com