У меня есть ссылка на веб-странице, которая отправляет электронные письма с локального SMTP-сервера с вложениями в формате pdf, созданными из iText, которые я сделал следующим образом Как создать отчет в формате PDF в памяти и отправить его как вложение электронной почты с использованием iText и Java и он работает, однако, когда я получаю электронные письма, я не вижу имя / адрес отправителя.
В моем почтовом ящике Gmail отображается «от (неизвестного отправителя)», и, если я нажму «Ответить», поле «Кому» будет полностью пустым. В hotmail отображается как «Неизвестно», но когда я его открываю, отправитель отображается как «admin@whwhat.com от имени (Неизвестно)»
Когда я тестирую SMTP на сервере через telnet, имя отправителя, которое я создаю, проходит просто замечательно. Как я могу заставить его отображаться, когда приложение отправляет электронное письмо?
Вот код, который отправляет электронное письмо:
String smtpHost = "localhost";
int smtpPort = 25;
String sender = "admin@whatever.com";
String[] recipient = pdfEmail.replaceAll("\\ ", "").split(",");
String content = "whatever";
String subject = "whatever";
Properties props = new Properties();
props.put("mail.smtp.host", smtpHost);
props.put("mail.smtp.user", sender);
props.put("mail.smtp.port", smtpPort);
Session session = Session.getDefaultInstance(props, null);
ByteArrayOutputStream outputStream = null;
try {
//construct the text body part
MimeBodyPart textBodyPart = new MimeBodyPart();
textBodyPart.setText(content);
//now write the PDF content to the output stream
outputStream = new ByteArrayOutputStream();
writePdf(outputStream); //creates PDF
byte[] bytes = outputStream.toByteArray();
//construct the pdf body part
DataSource dataSource = new ByteArrayDataSource(bytes, "application/pdf");
MimeBodyPart pdfBodyPart = new MimeBodyPart();
pdfBodyPart.setDataHandler(new DataHandler(dataSource));
pdfBodyPart.setFileName("test.pdf");
//construct the mime multi part
MimeMultipart mimeMultipart = new MimeMultipart();
mimeMultipart.addBodyPart(textBodyPart);
mimeMultipart.addBodyPart(pdfBodyPart);
//create the sender/recipient addresses
InternetAddress iaSender = new InternetAddress(sender);
InternetAddress[] toAddress = new InternetAddress[recipient.length];
// To get the array of addresses
for( int i=0; i < recipient.length; i++ ) {
toAddress[i] = new InternetAddress(recipient[i]);
}
//construct the mime message
MimeMessage mimeMessage = new MimeMessage(session);
for( int i=0; i < toAddress.length; i++) {
mimeMessage.addRecipient(Message.RecipientType.TO, toAddress[i]);
}
mimeMessage.setSender(iaSender);
mimeMessage.setSubject(subject);
mimeMessage.setRecipients(Message.RecipientType.TO, toAddress);
mimeMessage.setContent(mimeMultipart);
//send off the email
Transport.send(mimeMessage);
} catch(Exception ex) {
ex.printStackTrace();
} finally {
//clean off
if(null != outputStream) {
try { outputStream.close(); outputStream = null; }
catch(Exception ex) { }
}
}
}