0
我是java郵件API的新用戶。我正試圖發送不同的PDF到不同的電子郵件ID。這裏的電子郵件ID和文件路徑是 取自一個Excel文件使用ArrayList,由另一個 類返回。但是附件文件在收件人郵件上已經損壞。我 已經檢查了有關堆棧溢出相關 這個問題的所有問題和答案,但是沒有任何結果。請幫幫我。給我編寫的程序我有 。請幫幫我。我使用Java郵件API發送不同的PDF到Excel文件中的不同郵件,在收件人郵件上遭到破壞?
package emailsending;
import java.util.ArrayList;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class Email {
String username;
String password;
String excelFileName;
String result = null;
String filename, status;
ArrayList email;
byte[] buf = {};
ArrayList list_filename;
public Email(String username, String password, String excelFileName) {
this.username = username;
this.password = password;
this.excelFileName = excelFileName;
excelReading er = new excelReading(excelFileName);
ArrayList li = er.email_file();
email = (ArrayList) li.get(0);
list_filename = (ArrayList) li.get(1);
}
public Email() {
}
public String sendToAll() {
try {
Properties props = System.getProperties();
props.put("mail.smtp.starttls.enable", "true");
props.setProperty("mail.transport.protocol", "smtp");
props.setProperty("mail.host", "smtp.gmail.com");
props.put("mail.smtp.port", "465");
props.put("mail.smtp.SocketFactory.port", "465");
props.put("mail.smtp.SocketFactory.class", "javax.net.ssl.ssLSocketFactory");
System.err.println("Properties set----");
Session session = Session.getDefaultInstance(props);
session.setDebug(false);
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(username));
message.setSubject("Client Receipt");
//1. First body part
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText("This is your receipt");
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart fileBodyPart = new MimeBodyPart();
for (int i = 0; i < email.size(); i++) {
status = "Sending first mail:-" + email.get(i);
System.err.println(status);
message.setRecipients(Message.RecipientType.TO,
InternetAddress.parse(((String) email.get(i)).trim()));
filename = ((String) list_filename.get(i)).trim();
DataSource source = new FileDataSource(filename);
DataHandler lDataHandler = new DataHandler(source);
fileBodyPart.setDataHandler(lDataHandler);
fileBodyPart.setFileName(filename);
multipart.addBodyPart(fileBodyPart);
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
Transport transport = session.getTransport("smtps");
transport.connect("smtp.gmail.com", username, password);
transport.sendMessage(message, message.getAllRecipients());
result = "Sucessfully sent Email";
}
} catch (Exception ex) {
result = "Unable to send Email" + ex.getMessage();
System.out.print(ex);
}
return result;
}
}
我已經嘗試過您的建議,但它仍然無法正常工作。我已經嘗試過的標題: ** fileBodyPart.setDataHandler(lDataHandler); fileBodyPart.setFileName(lDataHandler.getName()); fileBodyPart.setHeader(「Content-Type」,「multipart/mixed」); fileBodyPart.setHeader(「Content-Transfer-Encoding」,「base64」); multipart.addBodyPart(fileBodyPart); multipart.addBodyPart(messageBodyPart); ** –
您是否添加了所有這些標題,或者您是否按照我的建議進行了操作?如果它還沒有工作,我需要更多的細節。 –