Send-MailMessage
-From "from@example.com"
-To "to@example.com"
-Subject "Subject" `
-SmtpServer "localhost" -Body "Test Message"
我使用Send-MailMessage发送电子邮件,PowerShell相当于使用System.Net.Mail.MailMessage。
有没有办法从空发件人地址发送电子邮件?如果没有,我可以使用任何powershell / .NET替代品。
From是必需的,所以不能省略。 null,""等等是不可接受的,因为Send-MailMessage验证from是一个电子邮件地址。
<> Null sender address:&#34;发件人地址是接收有关投放问题的电子邮件的电子邮件地址(邮件列表会更改此内容但不会更改From:电子邮件标题,以便他们而非人员发送给他们,获取有关交付问题的消息)。一个特殊的空发件人地址(MAIL FROM:&lt;&gt;)用于表示没有人关心,也不应发送退回通知。自己发送退回邮件时会使用空发件人,有时也会在其他时间使用。<#34;
答案 0 :(得分:1)
您不能使用SmtpClient和MailMessage执行此操作,因此使用此或Send-MailMessage是不可能的。不幸的是,这意味着您要么找到支持它的第三方库,要么自己编写代码直接通过SMTP发送。
您可能最好通过单元测试来测试系统的这一部分。
答案 1 :(得分:0)
open localhost 25
HELO Foo
MAIL FROM: <> <--- the null address
实际上并不是完整的工作代码,但应该给人一般的印象GetFile和SmtpStream都是流。解决方案是通过直接与SMTP协议交互来提供预先创建的.eml文件。
GivenAClientIsConnectedToAnAgentInTheWAITINGState();
SmtpStream.WriteAsciiString("MAIL FROM:<>{0}", Environment.NewLine);
SmtpStream.ReceiveAsAsciiString();
SmtpStream.WriteAsciiString("RCPT TO:<{0}>{1}",mailboxAddress, Environment.NewLine);
SmtpStream.ReceiveAsAsciiString();
SmtpStream.WriteAsciiString("DATA{0}", Environment.NewLine);
SmtpStream.ReceiveAsAsciiString();
SmtpStream.SendEmail(_fileRepository.GetFile("NullSenderMessage.eml"));
SmtpStream.SendDataTerminator();
SmtpStream.ReceiveAsAsciiString();
SmtpStream.WriteAsciiString("QUIT");