현재 첨부 파일 데이터를 포함한 SMTP 트래픽을 수신하는 전자 메일 서버를 만들고 해당 전자 메일 주소로 MX 레코드를 찾아 전달하는 aC# 응용 프로그램에서 작업 중입니다. 받는 사람에게.다른 smtp 포트에 첨부 파일이있는 전자 메일 보내기
내가 이해하지 못하는 하나의 이상한 문제를 제외하면이 모든 것이 완벽하게 작동합니다.
이 문제는 Linux에서 Mono로 C# 프로그램을 실행하는 경우에만 영향을줍니다. Windows에서는 문제가 없습니다.
문제는 포트 26 (포트 25가 이미 사용 중임)에서 전자 메일 서버 프로그램을 실행하고있는 경우 파일을 보내는 Windows PC에 테스트 C# 프로그램이 있다는 것입니다. 그런 다음 첨부 파일 데이터를 임시 파일에 성공적으로 쓰고 첨부 파일을 다시 만들고 메시지와 함께 첨부 파일을 보냅니다. 전자 메일을 받으면 전자 메일 컨텐트는 더 이상 존재하지 않고 첨부 파일은 noname
이라고하며 첨부 파일을 볼 경우 전자 메일 제목의 일부와 첨부 파일을 구성하는 기본 64 문자열이 있습니다.
그러나 프로그램을 포트 25에서 실행하도록 변경하면 모든 것이 정확히 같은 방식으로 수행됩니다.하지만 이번에는 전자 메일이 내 Gmail 계정에 도착하면 전자 메일은 메시지 본문과 완벽하게 일치합니다 올바른 이름과 형식으로 첨부하십시오. 왜 다른 포트에서 Linux에서 내 프로그램을 실행하면이 문제가 발생하는지 이해할 수 없습니다. 나는 일하는 것과 일하지 않는 것 사이의 헤더를 점검했고 모든 것이 잘된 것처럼 보입니다.
모노와 관련된 문제입니까? 또한 포트를 25 번으로 설정하여 MX 레코드에 보낼 때 smtp 클라이언트에 포트를 설정하려고 시도했지만 별다른 차이는 없습니다. 아래 첨부 파일을 보내는 방법입니다.
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);
도움을 주셔서 감사합니다.
Attachment attachment = new Attachment(fileStream, attachments[0].realFileName, MediaTypeNames.Application.Octet);
은 첨부 파일 생성자의 두 번째 매개 변수는 ContentType이이 아닌 파일 이름이어야합니다 :
제가보기에는하지만, 비 Windows OS와 관련이있는 것으로 보입니다 ... http://turadg.aleahmad.net/2007/10/psa-when-you-receive-noname- 첨부 파일/http://www.drslewis.org/grant/2008/01/25/gmail-noname-attachment-bug/, 가능한 해결책은 다음과 같습니다. http://stackoverflow.com/questions/6657363/using-mail- mime-to-send-attach-to-gmail 수신 noname 첨부 파일은 다음과 같습니다. http://www.jquery.info/noname/ – RandomUs1r
@ RandomUs1r 감사합니다. 콘텐츠가 완전히 잘못 되었기 때문에 확장 프로그램을 변경할 수 없습니다. 난 당신이 이전에 링크 된 게시물에 콘텐츠 유형을 설정했지만 어떤 차이를 만들지 시도했습니다. 그 아주 이상한 – Boardy
음 ... 인코딩 설정을 시도 했습니까? http://msdn.microsoft.com/en-us/library/system.net.mail.mailmessage.bodyencoding.aspx – RandomUs1r