gpt4 book ai didi

java - 使用apache common mail发送多封邮件

转载 作者:行者123 更新时间:2023-12-02 08:14:13 25 4
gpt4 key购买 nike

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setContentType("text/html");
PrintWriter out = response.getWriter();
Connection con=null;
Statement st=null;
try{
Class.forName("com.mysql.jdbc.Driver").newInstance();
String useq="root";
String paq="manager";
String url="jdbc:mysql://localhost:3306/jayna";
con=DriverManager.getConnection(url,useq,paq);
st=con.createStatement();


String q="Select * from appointment where date=curdate()";
ResultSet rs= st.executeQuery(q);
String smtpServer="smtp.gmail.com";
String from="";
String userName="username";
String password="password";

String sub="Appointment Remainder";
String mailText="This is a remainder message from Jayna Dental Center. Please attend your appointment with us today at your prescribed clinic. Thank you.";

out.println(mailText);
from = userName;
while(rs.next())
{

String to="";
String pid=rs.getString("pid");
String q1="select * from patient where patient_no='"+pid+"'";
ResultSet rs1=st.executeQuery(q1);
out.println("inside while");
if(rs1.next())
{

to=rs1.getString("email_id");
out.println("inside if");


Properties props = System.getProperties();
props.put( "mail.smtp.host", smtpServer ) ;
out.println("a");
//SMTP server authentication is set to false, by default. Setting it to true as shown below
props.put( "mail.smtp.auth", "true" ) ;
out.println("a");
Session session = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(session);
out.println("a");
//Setting the 'from', 'to', 'cc' addresses and the 'subject'
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject(sub);
out.println("a");
//Making the mail body as inline and of html type
MimeMultipart mp = new MimeMultipart();
MimeBodyPart text = new MimeBodyPart();
text.setDisposition(Part.INLINE);
text.setContent(mailText, "text/html");
out.println("a");
mp.addBodyPart(text);
message.setContent(mp);
out.println("a");
//SMTP authentication
Transport transport = session.getTransport ("smtp") ;
transport.connect (smtpServer, userName, password) ;
message.saveChanges();
out.println("a");
transport.sendMessage(message, message.getAllRecipients());
transport.close();
out.println("a");
out.println("Your mail has been sent. Please close this window");

}
else{
out.println("No such pid");
}}
} catch (Exception e){
System.err.println("Email could not be sent due to error: "+e);
e.printStackTrace();
out.println("ex");
}

}

/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}

您好,我一直在尝试使用上面的代码向所有预约日期为今天的人发送邮件。我收到错误 Transport Transport = session.getTransport("smtp") ; Transport.connect(smtpServer, 用户名, 密码);

请告诉我这段代码有什么问题..:(我使用了很多 out.println 只是为了测试我的代码在哪里工作。

Stack trace 
Email could not be sent due to error: com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. u6sm22896pbh.0

com.sun.mail.smtp.SMTPSendFailedException: 530 5.7.0 Must issue a STARTTLS command first. u6sm22896pbh.0

at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2057)
at com.sun.mail.smtp.SMTPTransport.mailFrom(SMTPTransport.java:1580)
at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1097)
at mail.Sendmail.doPost(Sendmail.java:134)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:263)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)

最佳答案

我的预测是:发生异常是因为您需要通过 TLS 验证与 Gmail 的连接。

将以下行添加到您的属性中:

props.put("mail.smtp.auth", "true");
props.put("mail.smtp.starttls.enable", "true");

然后打开您的 session 并进行传输,如下所示:

Session session = Session.getInstance(props);
Transport transport = session.getTransport("smtp");
transport.connect(D_HOST, D_PORT, D_USER, D_PASS);

显然使用您自己的帐户名、密码等。:)

希望这有帮助!

关于java - 使用apache common mail发送多封邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6759359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com