java发送邮件不需要验证_是否可以在没有身份验证的情况下使用Javamail发送邮件?...

这是可能的,但您需要在DNS中查找自己的MX记录.您可以使用

dnsjava-2.16.jar库.添加dnsjava和javax.mail库以构建编译以下代码示例的路径.尝试以这种方式传递邮件后检查垃圾邮件文件夹:因为没有DKIM签名,并且用于发送电子邮件的IP地址不属于此主机允许的地址(“yourhost.org”),接收邮件服务器可能将电子邮件放入垃圾邮件文件夹.

import com.sun.mail.smtp.SMTPSendFailedException;

import com.sun.mail.smtp.SMTPSenderFailedException;

import com.sun.mail.util.MailConnectException;

import org.xbill.DNS.*;

import javax.mail.Message;

import javax.mail.*;

import javax.mail.internet.AddressException;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeMessage;

import java.util.Properties;

public class SendEmail {

String Subject = "Email subject!";

Template template;

Properties properties;

String hostname = "yourhost.org"; // the host to send email from

String to;

String fromEmal;

String fromName = "Your name";

SendEmail(String from,String to){

this.to = to;

this.fromEmal = from;

this.properties = new Properties();

this.properties.put("mail.transport.protocol", "smtp");

this.properties.put("mail.smtp.host", getMXRecordsForEmailAddress(to)); // SMTP Server

this.properties.put("mail.smtp.port","25");

this.properties.put("mail.smtp.localhost", hostname); // HELO host

this.properties.put("mail.smtp.from",from);// SMTP MAIL FROM

this.properties.put("mail.smtp.allow8bitmime","true");

// this.properties.put("mail.smtp.localaddress","192.168.1.44"); // Connect from this IP

sendMessage();

}

public void sendMessage() {

try{

Session session = Session.getInstance(this.properties);

MimeMessage msg = new MimeMessage(session);

msg.setFrom(new InternetAddress("\""+this.fromName+"\""+""));

msg.addRecipient(Message.RecipientType.TO,

new InternetAddress(this.to));

msg.setSubject(this.Subject);

msg.setContent("Email body with HTML","text/html; charset=utf-8");

Transport.send(msg);

System.out.println("Message sent OK");

}catch (AddressException e){

System.out.println("Bad address format: "+e.getRef());

}catch (SMTPSenderFailedException e){

System.out.println(e.getReturnCode() + ": We can't send emails from this address: " + e.getAddress());

}catch (NoSuchProviderException e){

System.out.println(e.getMessage()+": No such provider");

}catch (SMTPSendFailedException e){

System.out.print(e.getReturnCode() + ": " + e.getMessage());

}catch (MailConnectException e){

System.out.println("Can't connect to "+ e.getHost()+":"+e.getPort());

}

catch(MessagingException e){

System.out.println("Unknown exception"+e);

}catch (Exception e){

System.out.println(e);

}

}

public String getMXRecordsForEmailAddress(String eMailAddress) {

String returnValue = new String();

try {

String parts[] = eMailAddress.split("@");

String hostName = parts[1];

Record[] records = new Lookup(hostName, Type.MX).run();

if (records == null) { throw new RuntimeException("No MX records found for domain " + hostName + "."); }

if (records.length > 0){

MXRecord mxr = (MXRecord) records[0];

for (int i = 0; i< records.length; i++){

MXRecord tocompare = (MXRecord)records[i];

if (mxr.getPriority() > tocompare.getPriority())

mxr = tocompare;

}

returnValue = mxr.getTarget().toString();

}

} catch (TextParseException e) {

return new String("NULL");

}

return returnValue;

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要设置JavaMail发送邮件,你需要按照以下步骤进行操作: 1. 导入相关的类库:首先,确保你的项目中已经导入了JavaMailJava Activation Framework(JAF)的相关类库。你可以从官方网站(https://javaee.github.io/javamail/)下载并添加这些类库到你的项目中。 2. 配置SMTP服务器信息:你需要指定SMTP服务器的地址和端口号。通常,SMTP服务器的地址是根据你使用的邮件服务提供商而不同。例如,对于Gmail来说,SMTP服务器地址是"smtp.gmail.com",端口号是587。 3. 创建Session对象:使用javax.mail.Session类创建一个Session对象。你可以通过使用Properties对象来设置Session的一些属性,例如SMTP服务器信息、是否需要身份验证等。 ```java Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-password"); } }); ``` 在这里,你需要替换`your-email@gmail.com`和`your-password`为你自己的邮箱地址和密码。 4. 创建Message对象:使用javax.mail.Message类创建一个Message对象,并设置邮件的发送者、接收者、主题和正文等信息。 ```java Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@gmail.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient-email@example.com")); message.setSubject("Hello, World!"); message.setText("This is the content of the email."); ``` 在这里,你需要将`your-email@gmail.com`替换为你自己的邮箱地址,将`recipient-email@example.com`替换为邮件接收者的邮箱地址。 5. 发送邮件使用Transport类的静态方法send()发送邮件。 ```java Transport.send(message); ``` 完整的示例代码如下: ```java import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; public class EmailSender { public static void main(String[] args) { Properties properties = new Properties(); properties.put("mail.smtp.host", "smtp.gmail.com"); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(properties, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("your-email@gmail.com", "your-password"); } }); try { Message message = new MimeMessage(session); message.setFrom(new InternetAddress("your-email@gmail.com")); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("recipient-email@example.com")); message.setSubject("Hello, World!"); message.setText("This is the content of the email.");

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值