JavaMail如何别名发送邮件

在钓鱼邮件的欺骗中,最常用的手法就是为邮件发送人添加别名,如果邮件发送人的名称跟邮件接收人熟悉的别名相近的话,那钓鱼成功率要提升一倍。

1. 简单邮件

JAVA使用JavaMail工具包进行邮件发送,其MAVAN依赖如下:

<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context-support</artifactId>
    <version>1.5.6</version>
</dependency>

所有的邮件服务器都采用SMTP协议,进行邮件发送,以新浪的免费邮箱为例,完整的JavaMailSender配置代码如下:

@Bean
public JavaMailSenderImpl mailSender() {
    JavaMailSenderImpl mailSender = new JavaMailSenderImpl();
    mailSender.setDefaultEncoding("UTF-8");
    mailSender.setHost("smtp.sina.com");
    //  替换为自己的用户名,这里不能添加别名
    mailSender.setUsername("yiifaa@sina.com");
    //  替换为自己的密码
    mailSender.setPassword("******");
    mailSender.setProtocol("smtp");
    mailSender.setPort(25);
    return mailSender;
}

添加别名的位置在MailMessage中,也就是邮件模板,如下:

@Bean
public SimpleMailMessage emailMessage() {
    SimpleMailMessage message = new SimpleMailMessage();
    message.setFrom("IT服务中心<yiifaa@sina.com>");
    message.setSubject("测试邮件");
    return message;
}

可以看出,操作非常简单,格式是“别名<邮件地址>”,并且支持中文名称。

2. 多媒体邮件

上述的方法只适合于简单的文本邮件,如果要加载多媒体内容,那么上述的方法会报错,错误信息如下:

com.sun.mail.smtp.SMTPSendFailedException: 553 Envolope sender mismatch with header from..
    at com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:2267)
    at com.sun.mail.smtp.SMTPTransport.finishData(SMTPTransport.java:2045)
    at com.sun.mail.smtp.SMTPTransport.sendMessage(SMTPTransport.java:1260)
    at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:448)

解决办法比较麻烦,必须要对别名进行编码,代码如下:

String from = "yiifaa@sina.com";
String alias = "";    
try {
    //  必须要进行编码
    alias=javax.mail.internet.MimeUtility.encodeText("IT服务中心");    
} catch (UnsupportedEncodingException e) {    
    e.printStackTrace();    
}     
mm.setFrom(new InternetAddress(alias + " <"+from+">")); 

赶紧去试试吧,据我发现,向企业内网发送邮件,往往具有更好的效果。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用JavaMail实现批量发送邮件,主要步骤如下: 1. 配置邮件服务器信息,包括SMTP服务器地址、端口号、用户名和密码等。 2. 创建JavaMail会话对象,可以通过Session.getDefaultInstance()方法获取默认会话对象,也可以自己创建Session对象。 3. 创建邮件对象,包括发件人、收件人、主题、内容等。 4. 创建多个邮件对象,将它们添加到一个邮件列表中。 5. 创建邮件传输对象Transport,连接邮件服务器并发送邮件列表。 下面是一个简单的示例代码: ``` import java.util.*; import javax.mail.*; import javax.mail.internet.*; public class MailSender { public static void main(String[] args) throws Exception { String host = "smtp.example.com"; String username = "your_username"; String password = "your_password"; String from = "your_email@example.com"; String subject = "Test Email"; String body = "This is a test email."; Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.auth", "true"); Session session = Session.getDefaultInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); List<String> toList = new ArrayList<String>(); toList.add("recipient1@example.com"); toList.add("recipient2@example.com"); toList.add("recipient3@example.com"); List<Message> messageList = new ArrayList<Message>(); for (String to : toList) { Message message = new MimeMessage(session); message.setFrom(new InternetAddress(from)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject(subject); message.setText(body); messageList.add(message); } Transport transport = session.getTransport("smtp"); transport.connect(); for (Message message : messageList) { transport.sendMessage(message, message.getAllRecipients()); } transport.close(); } } ``` 在上面的示例代码中,我们将收件人地址保存在一个列表中,然后创建多个邮件对象,将它们添加到一个邮件列表中,最后使用Transport对象发送邮件列表。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值