2015-04-20 56 views
0
Send-MailMessage 
-From "[email protected]" 
-To "[email protected]" 
-Subject "Subject" ` 
-SmtpServer "localhost" -Body "Test Message" 

我發送電子郵件使用Send-MailMessage,相當於使用System.Net.Mail.MailMessage的PowerShell。發送電子郵件從<>空寄件人地址

有沒有發送電子郵件從空發件人地址的任何方式?如果沒有,我可以使用任何powershell/.NET的替代品。

由於是必需的,所以不能省略。 null,「」等是不可接受的,因爲Send-MailMessage驗證from是一個電子郵件地址。


<> Null sender address「發件人地址是將收到電子郵件通知交付問題(郵件列表改變這一點,但不是從電子郵件地址:電子郵件標題,使他們而不是人發送給他們,讓有關發送問題的消息)一個特殊的空發送者地址(MAIL FROM:MAIL FROM:<>)用於表示沒有人關心,並且不應該發送退信通知,當發送退回消息本身時,有時在其他時間使用空發送者。 「

+0

爲什麼要發送郵件來自「空」發件人? –

+0

我的代碼處理電子郵件。我可以從這個地址收到郵件,所以我需要能夠測試它。 –

+0

爲什麼不只是使用Send-MailMessage發送你知道要生成NDR的電子郵件?使用From:地址將反彈路由到您的腳本。 – mjolinor

回答

1

你不能用SmtpClient和MailMessage來做到這一點,所以使用這個或Send-MailMessage是不可能的。不幸的是,這意味着你要麼找到支持它的第三方庫,要麼自己編寫代碼直接通過SMTP發送。

你可能最好使用單元測試測試系統的這部分。

0
通過telnet
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"); 
相關問題