send mail

本文介绍了在Linux系统中使用sendmail、mail工具、formail和sendmail联合发送及mutt发送邮件的方法,并提供了每种方法的具体步骤和注意事项。

 LINUX

    系统管理人员经常会遇到对于设备或者任务的预警与通知,通常情况有发送短信、邮件等方式。发送短信一般来说需要有短信猫(硬件)或者调用libfetion给飞信用户发送。本文介绍几种简单的发送邮件的方式。

本文环境:Ubuntu 10.04
基础:
      Linux服务器发送邮件一般都是基于sendmail进行的,sendmail服务器提供对外的邮件发送功能。其他工具都是基于sendmail进行服务的。所以要在linux系统发送邮件,首先需要安装sendmail服务器安装方法:
  1. #sudo apt-get install sendmail
然后通过ps查看是否有sendmail进程,如果存在,则安装成功:
  1. #ps -ef|grep sendmail

  2. root 1282 1 0 13:39 ? 00:00:00 sendmail: MTA: accepting connections
成功安装sendmail后,就可以向邮件账户发送邮件了。

=====================分割线===============================

     本文列出了在linux下常用的发送邮件的方法,供大家参考。
方法1:
直接使用sendmail,编辑如下文件a.sh,通过chmod 更改权限后执行就可以。
  1. #!/bin/bash
  2. /usr/sbin/sendmail -t << EOF
  3. From: Mail test <test1@gmail.com>
  4. Sender: jkjl <test@gmail.com>
  5. To: test@qq.com
  6. Cc: test@g.cn
  7. Subject: mail testing
  8. ----------------------------------
  9. This is the mail content ...
  10. muhaha
  11. ---------------------------------
  12. EOF
man sendmail 

-t参数的含义
 

-t     Read message for recipients. To:, Cc:, and Bcc: lines will be
 
              scanned for recipient addresses. The Bcc: line will be deleted
              before transmission.

    另外,sendmail默认从标准输入读入内容直到结束或者遇到".",-oi 就是认为遇到"."不再认为是结束符了。如下:
echo "hahaha.my"|sendmail -oi ureamil@email.com


方法2
:
利用mail工具发送,利用mail发送邮件必须安装mailutils
  1. sudo apt-get install mailutils
然后发送邮件
  1. $ mail -s "just a test" 收信人邮箱地址 < 要发送的邮件内容文件 
  1. mail -s "haha" test@163.com < hello.txt

mail 工具的-t 可以跟多个用户,如下:
  1. mail -s Title -t test1@163.com -t test2@163.com < hello.txt

如果要发送带附件的邮件,则需要先安装uuencode,uuencode 在sharutils包中
  1. sudo apt-get install sharutils
然后再发送
uuencode 附件名 显示附件名| mail -s 题目 目的邮箱
  1. uuencode hello.txt bienvenu |mail -s Test test@163.com
如果按上面的方法,邮件只带一个附件,即将正文和附件组成联合文件发出。



方法3:

利用formail和sendmail联合发送:
formail可以封装邮件信息,然后调用sendmail发送,经典例子如下:
  1. echo hello|formail -I "From:test@163.com" -I "MIME-Version:1.0" -I "Content-type:text/html;charset=gb2312" -I "Subject:test"|sendmail -oi aimEmail@mailserver.com


方法4:

使用mutt发送
mutt是一个linux下非常好用的email程序,最典型的一个例子如下:

mutt -s "Test mail" test@163.com -a test.jpg < hello.txt
其中:s-主题  a-附件

最后追加的是
邮件内容
 mutt甚至可以使用pgp加密,利用mutt支持MIME,解决乱码问题等,总之mutt是个人认为的最好用的email工具。
在Java中发送电子邮件,通常使用JavaMail API,这是一个标准的扩展库,允许开发者在应用程序中集成邮件发送功能。JavaMail API提供了丰富的类和接口,如`MimeMessage`、`Session`、`Transport`等,用于构建和发送电子邮件。 ### 发送简单文本邮件 下面是一个使用JavaMail API发送简单文本邮件的基本示例。此示例中使用了`MimeMessage`来构建邮件内容,并通过`Transport`类发送邮件[^1]。 ```java import javax.mail.*; import javax.mail.internet.*; import java.util.Properties; public class SimpleEmailSender { public static void main(String[] args) { // 邮件服务器配置 String host = "smtp.163.com"; // SMTP服务器地址 int port = 465; // SMTP服务器端口号 final String username = "dfh_414@163.com"; // 发件人邮箱账号 final String password = "KSFIDNNNLZCVLAUT"; // 授权码 // 收件人地址 String to = "xxxxxx@qq.com"; // 设置邮件服务器属性 Properties props = new Properties(); props.put("mail.smtp.host", host); props.put("mail.smtp.port", port); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); props.put("mail.smtp.socketFactory.fallback", "false"); // 创建会话 Session session = Session.getInstance(props, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(username, password); } }); try { // 创建邮件对象 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("测试邮件"); message.setText("网易邮箱给QQ邮箱发消息了!"); // 发送邮件 Transport.send(message); System.out.println("邮件发送成功"); } catch (MessagingException e) { e.printStackTrace(); } } } ``` ### 发送HTML邮件 如果需要发送包含HTML格式内容的邮件,可以使用`MimeMessage`的`setContent()`方法,指定内容类型为`text/html`[^2]。 ```java // 创建邮件对象 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("HTML邮件测试"); // HTML内容 String htmlContent = "<h1>这是一个HTML邮件</h1><p>支持<b>加粗</b>和<i>斜体</i>文字。</p>"; message.setContent(htmlContent, "text/html; charset=utf-8"); ``` ### 发送带有附件的邮件 发送带有附件的邮件时,需要创建`MimeBodyPart`对象来表示每个部分,然后将这些部分添加到`MimeMultipart`对象中,最后将这个多部分对象设置为邮件的内容[^2]。 ```java // 创建邮件对象 Message message = new MimeMessage(session); message.setFrom(new InternetAddress(username)); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse(to)); message.setSubject("带附件的邮件"); // 创建多部分消息 MimeMultipart multipart = new MimeMultipart(); // 创建文本部分 MimeBodyPart textPart = new MimeBodyPart(); textPart.setText("这是一封带有附件的邮件。"); multipart.addBodyPart(textPart); // 创建附件部分 MimeBodyPart attachmentPart = new MimeBodyPart(); FileDataSource fileDataSource = new FileDataSource("path/to/file.txt"); attachmentPart.setDataHandler(new DataHandler(fileDataSource)); attachmentPart.setFileName(fileDataSource.getName()); multipart.addBodyPart(attachmentPart); // 将多部分内容设置为邮件内容 message.setContent(multipart); ``` ### 邮件发送配置 为了简化邮件发送过程,特别是在Spring Boot项目中,可以通过添加依赖项和配置来实现邮件发送功能[^3]。 #### Maven依赖 ```xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>com.sun.mail</groupId> <artifactId>jakarta.mail</artifactId> <version>1.6.7</version> <scope>compile</scope> </dependency> ``` #### application.yml 配置 ```yaml spring: mail: protocol: smtps host: smtp.163.com username: dfh_414@163.com password: KSFIDNNNLZCVLAUT default-encoding: UTF-8 port: 465 properties: mail: stmp: ssl: enable: true ``` 以上代码和配置展示了如何使用Java发送不同类型(文本、HTML、带附件)的电子邮件,以及如何在Spring Boot项目中配置邮件发送功能。希望这些信息能帮助你实现Java邮件发送功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值