Tag: smtp

如何检查邮件地址是否存在?

我使用com.sun.mail.smtp.SMTPTransport通过Java发送电子邮件。 我成功发送了电子邮件,但如果我将邮件发送到无效的电子邮件地址,则SMTPTransport不会出现任何错误。 有没有办法检查给定的邮件地址是否存在? 我不是要将邮件地址检查为客户端 ,我需要检查为服务器端 。 我在很多论坛上发现了很多这样的问题,但我没有得到任何正确的解决方案。 我的代码是 – String email = “reciever@theirDomain.com”; Properties props = new Properties(); props.put(“mail.smtps.host”, “mail.myDomain.com”); props.put(“mail.smtps.auth”, “true”); Session session = Session.getInstance(props, null); MimeMessage msg = new MimeMessage(session); msg.setFrom(new InternetAddress(“Mail Demo “)); msg.setRecipients(Message.RecipientType.TO, email); msg.setSubject(“Mail Example”); msg.setSentDate(new Date(System.currentTimeMillis())); String txt = “Message Body”; msg.setText(txt); SMTPTransport st = (SMTPTransport)session.getTransport(“smtps”); st.connect(“mail.myDomain.com”,”my_email@myDomain.com”,”password”); st.sendMessage(msg, msg.getAllRecipients()); […]

通过java在特定日期发送自动邮件

我正在使用Java mail API通过我的java应用程序发送电子邮件。 但是我想在未来的日期自动发送它,即每个月/每年的任何具体日期。 我已经使用我的ISP的SMTP服务器发送上述id的电子邮件。我在网上引用了以下可用示例。 如何在这里设置任何具体的日期。我已经尝试过SimpleDateFormat并在此处设置它但它仍然立即发送邮件,但是按照提到的具体日期设置其发送日期。 有没有其他方法可以在上述日期和时间发送自动电子邮件? import java.util.*; import javax.mail.*; import javax.mail.internet.*; import javax.activation.*; // Send a simple, single part, text/plain e-mail public class TestEmail { public static void main(String[] args) { // SUBSTITUTE YOUR EMAIL ADDRESSES HERE!!! String to = “abc@abc.com”; String from = “abc@abc.com”; // SUBSTITUTE YOUR ISP’S MAIL SERVER HERE!!! String […]

没有ssl的Java邮件 – PKIX路径构建失败:

我使用java邮件通过smtp发送电子邮件。 smtp设置如下: Properties props = new Properties(); Object put = props.put(“mail.smtp.host”, smtpHost); props.put(“mail.smtp.user”, smtpUser); props.put(“mail.smtp.auth”, true); props.put(“mail.debug”, mailDebug); props.put(“mail.smtp.port”, port); smtp凭据已通过telnetting到我的smtpHost进行validation,并提供上述详细信息。 但是,当我在java邮件中使用上述设置时,我得到以下exception。 250-AUTH PLAIN LOGIN 250-STARTTLS 250 HELP DEBUG SMTP: Found extension “SIZE”, arg “52428800” DEBUG SMTP: Found extension “8BITMIME”, arg “” DEBUG SMTP: Found extension “PIPELINING”, arg “” DEBUG SMTP: Found extension “AUTH”, arg […]

如何更改JavaMail端口

我正在使用JavaMail编写一个小型Java应用程序,它向用户发送自动电子邮件。 他们可以选择(现在)两个端口:25和587.可以通过GUI上的单选按钮选择端口。 我添加了一个测试按钮,允许用户测试电子邮件设置(包括端口)。 但是,由于某种原因,一旦用户尝试发送测试电子邮件,该端口就无法更改。 Javamail将始终使用原始测试电子邮件的端口。 示例:用户尝试在端口25上发送电子邮件,JavaMail表示无法在端口25上连接(例如,SMTP主机使用另一个端口)。 用户单击端口587,并尝试发送新电子邮件。 JavaMail再次抛出错误,说它无法在端口25上连接。 我有点难过为什么。 每次发送新的测试电子邮件时,都会创建一个全新的SendMailUsingAuthentication对象。 在该类中,属性始终重置为正确的端口。 每当我调试时,据我所知,所有变量都是正确的,并与正确的端口相关联。 我错过了运输内部的东西吗? 在前端GUI中: private void testButtonActionPerformed(java.awt.event.ActionEvent evt) { int port = port25RadioButton.isSelected() ? PORT_25 : PORT_587; notifier = new SendMailUsingAuthentication(hostNameTextField.getText(), userTextField.getText(), getPassword(), emailTextField.getText().split(“,”),port); Thread wait = new Thread(new Runnable() { public void run() { try { changeStatusText(“Sending test email…”); notifier.postTestMail(); changeStatusText(“Test email sent.”); } […]

从java应用程序发送电子邮件时出现exception:拒绝中继

我们使用Spring Mail从java应用程序发送电子邮件org.springframework.mail.javamail.JavaMailSenderImpl Spring Email Configuration是 true Java代码快照是 @Autowired(required = true) @Qualifier(“errorMessageMailSender”) JavaMailSenderImpl mailSender; ………….. ………….. try { MimeMessage mailMessage = buildEmailMimeMessage(properties,mimeMultipart); logger.info(String.format(“Built MimeMessage object is “,mailMessage)); if (mailMessage != null) { mailSender.send(mailMessage); logger.info(“Mail sent Successfully”); }else{ logger.info(“Mail send failed as Mail message object construction failed.”); } result=true; } catch (Exception e) { logger.error(“An exception occurred […]

将邮件发送到Gmail帐户

我正在从我的Java应用程序向Gmail帐户发送邮件。 我使用过Java Mail API并且运行正常。 但是可以在不使用java中的邮件API的情况下发送电子邮件吗? 我的意思是只使用套接字: public class Main { public static void main(String[] args) throws Exception { String host = “smtp.gmail.com”; int port = 465; String from = “sh2rpzain@gmail.com”; String toAddr = “sharpzian@gmail.com”; Socket servSocket = new Socket(host, port); DataOutputStream os = new DataOutputStream(servSocket.getOutputStream()); DataInputStream is = new DataInputStream(servSocket.getInputStream()); if (servSocket != null && […]

javax.mail.AuthenticationFailedException:连接失败,没有指定密码?

此程序尝试发送电子邮件但会引发运行时exception: javax.mail.AuthenticationFailedException: failed to connect, no password specified? 当我提供正确的用户名和密码进行身份validation时,为什么会出现此exception? 发件人和收件人都有g-mail帐号。 发件人和收件人都有g-mail帐号。 发件人已禁用两步validation流程。 这是代码: import javax.mail.*; import javax.mail.internet.*; import java.util.*; class tester { public static void main(String args[]) { Properties props = new Properties(); props.put(“mail.smtp.host” , “smtp.gmail.com”); props.put(“mail.stmp.user” , “username”); //To use TLS props.put(“mail.smtp.auth”, “true”); props.put(“mail.smtp.starttls.enable”, “true”); props.put(“mail.smtp.password”, “password”); //To use SSL props.put(“mail.smtp.socketFactory.port”, “465”); props.put(“mail.smtp.socketFactory.class”, “javax.net.ssl.SSLSocketFactory”); […]

如何使用JavaMail API接收已发送电子邮件的确认?

我正在编写一个程序,它会发送电子邮件,并想知道接收方何时收到我发给他的电子邮件。 如何使用JavaMail API执行此操作? 如果我使用SMTPMessage,在设置通知选项后如何处理结果? SMTPMessage smtpMsg = new SMTPMessage(msg); smtpMsg.setNotifyOptions(SMTPMessage.NOTIFY_SUCCESS);

如何有效地使用javax.mail API发送批量邮件? 我们可以使用重用经过身份validation的会话来提高速度吗?

我可以使用javax.mail API发送邮件。 但这里的问题是平均每封邮件需要大约4.3秒才能发送到目的地。 如果我按顺序发送20封邮件,则需要大约86.599秒。 根据我的要求,这种方法不起作用。 我正在寻找一种可以在更短的时间内发送大量邮件的方法。 当我查看调试日志时,API正在尝试向SMTP服务器validation它发送的每条消息。 但我只创建了一次会话,并为我发送的所有邮件使用相同的会话。 现在我的问题是,每次向smtp服务器validation自身时,这不是一个开销过程。 有没有更好的方法? 以下是您可能会发现有用的日志跟踪。 250-AUTH LOGIN PLAIN XOAUTH XOAUTH2 250 ENHANCEDSTATUSCODES DEBUG SMTP: Found extension “SIZE”, arg “35882577” DEBUG SMTP: Found extension “8BITMIME”, arg “” DEBUG SMTP: Found extension “AUTH”, arg “LOGIN PLAIN XOAUTH XOAUTH2” DEBUG SMTP: Found extension “ENHANCEDSTATUSCODES”, arg “” DEBUG SMTP: Attempt to authenticate DEBUG […]

Java Mail之谜 – SMTP被阻止?

我有一个Java程序,它使用javax.mail发送SMTP消息。 这个程序在Linux机器上运行正常,我想事先强调一下。 当我在Windows 7 x64机器上尝试相同的代码时,我收到此错误: send failed, exception: javax.mail.MessagingException: Could not connect to SMTP host: smtp.west.cox.net, port: 25; nested exception is: java.net.SocketException: Network is unreachable: connect 这是代码: Session session = Session.getInstance(props, null); MimeMessage msg = new MimeMessage(session); msg.setFrom(); msg.setRecipients(Message.RecipientType.TO, props.getProperty(“mail.to”, “me@mine.com”)); msg.setSubject(mySubject); msg.setSentDate(new Date()); msg.setContent(sBuf.toString(), “text/html”); Transport.send(msg); 这个程序几乎都使用默认值。 它在同一网络上的另一个盒子上工作正常。 它使用我用于常规邮件客户端的相同设置,工作正常。 这个Windows框上有一些阻止SMTP的东西,但仅限于Java。 我安装了Symantec(Norton)360。 关闭它没有任何区别,但重新启动到安全模式(几乎禁用所有东西)允许程序工作和发送邮件就好了。 所以,回顾一下: 程序代码有效。 […]