我在"会话中遇到了一些问题"在尝试发送电子邮件时,该对象是代码
var bgColor = context.Request.QueryString["bg_color"];
这是测试类:
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.NoSuchProviderException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class EmailSender {
private String user;
private String password;
private String host;
private String destinatario;
private String oggetto;
private String allegato;
/**
*
* Costruttore completo, richiede i parametri
* di connessione al server di posta
* @param user
* @param password
* @param host
* @param mittente
* @param destinatari
* @param oggetto
* @param allegati
*/
public EmailSender(String user, String password, String host,
String destinatario,
String oggetto){
this.user = user;
this.password = password;
this.host = host;
this.destinatario = destinatario;
this.oggetto = oggetto;
}
// Metodo che si occupa dell'invio effettivo della mail
public void inviaEmail() {
int port = 465; //porta 25 per non usare SSL
Properties props = new Properties();
props.put("mail.smtp.auth", "true");
props.put("mail.smtp.user", user);
props.put("mail.smtp.host", host);
props.put("mail.smtp.port", port);
// commentare la riga seguente per non usare SSL
props.put("mail.smtp.starttls.enable","true");
props.put("mail.smtp.socketFactory.port", port);
// commentare la riga seguente per non usare SSL
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
props.put("mail.smtp.socketFactory.fallback", "false");
Session session = Session.getInstance(props, null);
session.setDebug(true);
// Creazione delle BodyParts del messaggio
MimeBodyPart messageBodyPart1 = new MimeBodyPart();
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
try{
// COSTRUZIONE DEL MESSAGGIO
Multipart multipart = new MimeMultipart();
MimeMessage msg = new MimeMessage(session);
// header del messaggio
msg.setSubject(oggetto);
msg.setSentDate(new Date());
msg.setFrom(new InternetAddress(user));
// destinatario
msg.addRecipient(Message.RecipientType.TO,
new InternetAddress(destinatario));
// corpo del messaggio
messageBodyPart1.setText("Ciao sono veramente euforico");
multipart.addBodyPart(messageBodyPart1);
// allegato al messaggio
allegato = CreazioneFile.AggiungiDati();
DataSource source = new FileDataSource(allegato);
messageBodyPart2.setDataHandler(new DataHandler(source));
messageBodyPart2.setFileName(allegato);
multipart.addBodyPart(messageBodyPart2);
// inserimento delle parti nel messaggio
msg.setContent(multipart);
Transport transport = session.getTransport("smtps"); //("smtp") per non usare SSL
transport.connect(host, user, password);
transport.sendMessage(msg, msg.getAllRecipients());
transport.close();
System.out.println("Invio dell'email Terminato");
}catch(AddressException ae) {
ae.printStackTrace();
}catch(NoSuchProviderException nspe){
nspe.printStackTrace();
}catch(MessagingException me){
me.printStackTrace();
}
}
}
堆栈错误:
线程中的异常" main" java.lang.NoClassDefFoundError:com.sun.mail.util.MailLogger 在javax.mail.Session.initLogger(Session.java:226) 在javax.mail.Session。(Session.java:210) 在javax.mail.Session.getDefaultInstance(Session.java:321)
它确定RAD和会话的问题,但我不知道我要设置的地方,以及我要设置的内容,你可以帮助我吗?
答案 0 :(得分:1)
com.sun.mail.util.MailLogger是JavaMail API的一部分。它已包含在EE环境中(这就是您可以在实时服务器上使用它的原因),但它不包含在SE环境中。
JavaMail API作为可选包提供,用于Java SE平台,也包含在Java EE平台中。
99%您在SE环境中运行测试,这意味着您在运行测试时需要手动将其添加到类路径中。
希望以下链接对您有所帮助
http://crunchify.com/java-mailapi-example-send-an-email-via-gmail-smtp/