リモートサーバーが '550 5.6.2 SMTPSEND.BareLinefeedsAreIllegal;を返しました。メッセージは、私はすでに同じ結果とContentEncoding.Base64とContentEncoding.Binaryをコードする試みたDATA」Mailkit SMTPエラー - BareLinefeedsAreIllegal
var message = new MimeMessage();
message.From.Add(new MailboxAddress(nameFrom, mailboxFrom));
message.Subject = Subject;
message.To.Add(new MailboxAddress(mailboxTo));
var bodyBuilder = new BodyBuilder();
var multipart = new Multipart("mixed");
bodyBuilder.HtmlBody = "Test Body";
multipart.Add(bodyBuilder.ToMessageBody());
byte[] bytes = System.IO.File.ReadAllBytes("Test.gif");
var attachment = new MimePart("binary", "bin")
{
ContentObject = new ContentObject(new MemoryStream(bytes), ContentEncoding.Base64),
ContentDisposition = new ContentDisposition(ContentDisposition.Attachment),
ContentTransferEncoding = ContentEncoding.Binary,
FileName = "F2.pdf"
};
multipart.Add(attachment);
message.Body = multipart;
using (var client = new SmtpClient())
{
// For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
client.ServerCertificateValidationCallback = (s, c, h, e) => true;
client.Connect(ssServer, ssPort, MailKit.Security.SecureSocketOptions.Auto);
// Note: since we don't have an OAuth2 token, disable
// the XOAUTH2 authentication mechanism.
client.AuthenticationMechanisms.Remove("XOAUTH2");
// Note: only needed if the SMTP server requires authentication
client.Authenticate(ssMailBox, ssMailBoxPassword);
client.Send(message);
}
を介して送信することができない裸改行を含んでいます。添付ファイルをスキップすると、メールが正しく送信されます。 "Test.gif"は私がアップロードしているランダムなgifです。
私はCHUNKING or the BDAT commandについて読んだことがありますが、このことやメールキットでどのように使用するのかは分かりません...どのような提案ですか?私は添付ファイル付きの通常のSMTPメールを送信しようとしています。これは難しくありません。
@Jstedfast
おかげでContentEncoding.Base64' 'に' attachment.ContentTransferEncoding'を設定してみてください。 – jstedfast
これでうまくいかない場合は、添付ファイルをまったく追加しないと正しく送信されますか?たぶん、裸の改行がヘッダーにあるのでしょうか? – jstedfast
これ以上見ると、MailKitは適切なContentTransferEncoding自体を設定しているはずです。私が地元のテストをするとき、それはします。 SMTPサーバーはどのような機能を提供していますか? [ProtocolLog](https://github.com/jstedfast/MailKit/blob/master/FAQ.md#ProtocolLog)を取得した場合、本当に 'DATA'コマンドを送信しますか?それとも適切なBDATを送るのですか?サーバが 'BINARYMIME'をサポートしている場合、MailKitはエンコーディングを"バイナリ "に自動設定し、' BDAT'コマンドを使用します。 – jstedfast