java使用ews-java-api发送邮件(包括附件和内联图片处理)

这篇具有很好参考价值的文章主要介绍了java使用ews-java-api发送邮件(包括附件和内联图片处理)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

不废话,开整

依赖

    <dependency> 
      <groupId>com.microsoft.ews-java-api</groupId>  
      <artifactId>ews-java-api</artifactId>  
      <version>2.0</version> 
    </dependency>

代码


import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.service.item.EmailMessage;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import microsoft.exchange.webservices.data.property.complex.AttachmentCollection;
import microsoft.exchange.webservices.data.property.complex.EmailAddressCollection;
import microsoft.exchange.webservices.data.property.complex.MessageBody;

import java.io.*;
import java.net.URI;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

public class EwsSendEmail {
	//ews-api新建发送邮件
	public static void main(String[] args) {
		SimpleDateFormat sf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String dateStr=sf.format(new Date());
		try {
			System.out.println(dateStr+"发邮件开始====================");
	        ExchangeService service = new ExchangeService();
			ExchangeCredentials credentials = new WebCredentials("ad", "pwd","domain");  
			service.setCredentials(credentials);
			service.setUrl(new URI("https://xxxx.com/ews/exchange.asmx"));     
			service.setTraceEnabled(true);
			EmailMessage email = new EmailMessage(service);
			//邮件标题
			email.setSubject("邮件标题");
			//邮件详情
			String uuid= UUID.randomUUID().toString().toLowerCase();
			//普通邮件详情(两种邮件详情选其一)
			email.setBody(new MessageBody("<div>邮件详情,发自XXX</div><div><br></div>"));
			//带内联图片邮件详情(两种邮件详情选其一)
			email.setBody(new MessageBody("<div><img src=\"cid:"+uuid+"\">邮件详情发自XXX</div><div><br></div>"));
			//收件人
			EmailAddressCollection toCollection = email.getToRecipients();
			toCollection.add("xxx@xxx.xxx.com");
            //抄送
            EmailAddressCollection ccCollection = email.getCcRecipients();
            ccCollection.add("xxx@xxx.xxx.com");
            //密送
            EmailAddressCollection bccCollection = email.getBccRecipients();
            bccCollection.add("xxx@xxx.xxx.com");
            //附件
            AttachmentCollection attachmentCollection = email.getAttachments();
            File file=new File("C:/Users/admin/Desktop/工作/新建 XLSX 工作表.xlsx");
            attachmentCollection.addFileAttachment(file.getName(), FileTobyte(file));
			//内联附件
			int count=attachmentCollection.getItems().size();//当前邮件已经存在多少附件
            File file2=new File("C:/Users/admin/Desktop/工作/图片/111.png");
            attachmentCollection.addFileAttachment(file.getName(), FileTobyte(file2));
            attachmentCollection.getItems().get(count).setIsInline(true);//设置当前附件为内联
            attachmentCollection.getItems().get(count).setContentId(uuid);//设置当前附件id
			
            email.sendAndSaveCopy();//发送并保存副本到已发送文件夹,如不需要保存则send()
	        System.out.println(dateStr+"发邮件结束====================");
		} catch (Exception e) {
			System.out.println(dateStr+"发邮件异常====================");
			e.printStackTrace();
		}
	}
	 public static byte[] FileTobyte(File file) {
        byte[] buffer = null;
        try {
            FileInputStream fis = new FileInputStream(file);
            ByteArrayOutputStream bos = new ByteArrayOutputStream();
            byte[] b = new byte[1024];
            int n;
            while ((n = fis.read(b)) != -1) {
                bos.write(b, 0, n);
            }
            fis.close();
            bos.close();
            buffer = bos.toByteArray();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return buffer;
    }
}

注意:普通邮件详情和带内联图片邮件详情选择其一。
有疑问欢迎留言。文章来源地址https://www.toymoban.com/news/detail-506586.html

到了这里,关于java使用ews-java-api发送邮件(包括附件和内联图片处理)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Spring Boot邮件发送教程:步步为营,轻松实现图片附件邮件!

      通过Spring Boot构建一个功能强大的邮件发送应用程序,重点是实现发送包含图片附件的邮件。我将逐步介绍添加必要的依赖、创建邮件服务类和控制器的步骤,并提供了具体的示例源代码。跟随这个简单而清晰的教程,您将能够轻松地集成邮件发送功能到您的Spring Boot应用中

    2024年02月04日
    浏览(37)
  • springboot 发送邮件,以及邮件工具类 并且解决spring-boot-starter-mail 发送邮件附件乱码或者文件错乱

    1、设置系统值 System.setProperty(“mail.mime.splitlongparameters”, “false”); 2、 在创建对象的时候定义编码格式(utf-8): MimeMessageHelper helper = new MimeMessageHelper(mes, true, “utf-8”); 3、 其次,在添加附件的时候,附件名是需要定义编码的 helper.addAttachment(MimeUtility.encodeWord(附件名,“utf-8”

    2024年02月15日
    浏览(45)
  • c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等

    c++实现smtp发送邮件,支持ssl的465端口发送,支持附件、一次发送多人、抄送等。 这里只使用了openssl库(用来支持ssl的465端口),其他部分是原生c++,支持在win/linux运行。 网上很多都是原始的支持25端口,明文发送,这里介绍一下ssl思路 使用sockect编程和ssl,使用SMTP协议。 使

    2024年02月08日
    浏览(80)
  • 让自己开发的VBA应用能够批量发送邮件(可带多个附件)

    当我们开发了一个VBA应用,很多时候需要让它能够自动批量发送邮件。这时候,我们就需要使用到CDO了。CDO全称Collaboration Data Objects,即协作数据对象,是Office 软件不在产品安装的一部分。它是通过基于COM的API提供对Outlook兼容对象的访问的包。CDO有多个组件,其中Message组件

    2024年02月11日
    浏览(29)
  • 邮件发送,附件太大怎么办 → 那就用分卷压缩吧

    昨晚,老婆辅导女儿写作业 有一道形容妈妈的题,女儿写下了:我妈妈像一个暴躁的老虎 老婆拿起题册轻轻敲了下女儿,生气到:有这么形容你妈的吗 女儿:你看你现在 老婆:我有那么暴躁吗,你就不能说我妈妈像一个公主,温柔大方漂亮? 女儿:题目让我造句,没让我

    2024年02月08日
    浏览(83)
  • 泛微OA获取流程附件地址,发送邮件或上传到第三方系统中

    在泛微的流程开发当中,有些流程的数据、附件要上传到其它平台,与其它平台相互集成对接, 一般是在写Action事件时,就会自动把数据及附件上传到其它平台,以下内容是经过正常使用获取流程附件的业务 示例:泛微OA中流程附件

    2024年02月15日
    浏览(50)
  • # Linux下用mailx发送邮件,邮件内容在用户端变成了以为.bin为扩展名的邮件附件的问题解决

    这种情况一般存在于将【某文件内容】作为【邮件内容】时发生,你指定的那个文件中包含了Linux终端控制字符,把这些控制字符删除即可恢复正常。 附件的文件名一般为.bin结尾,也可能是其他。 如果按这个原文发送邮件,则会变成以.bin结尾的邮件附件 删除文件中的控制字

    2024年02月16日
    浏览(35)
  • SonarQube 9.x集成Jenkins生成PDF扫描报告并通过邮件附件的方式发送;

    前面我们在Kubernetes中部署了SonarQube并与Jenkins集成扫描了前后端代码; 部署SonarQube链接 SonarQube与Jenkins集成扫描前后端代码链接 接下来记录一下如何将扫描报告通过邮件附件的形式推送到相应人的邮箱; https://gitee.com/zzulj/sonar-pdf-plugin/releases https://gitee.com/zzulj/sonar-pdf-plugin/r

    2024年02月07日
    浏览(40)
  • 使用证书认证方式调用Microsoft Graph Api发送邮件案例

    项目需求:           以证书认证获取授权调用MS Graph API发送邮件,代替原有的SMTP协议以用户名密码认证的方式。 操作步骤:         1.在Microsoft Azure 应用中心注册你的应用,申请需要使用的api权限   注册好后你会得到如下信息:  在权限中添加你需要的,发送邮件的

    2024年02月06日
    浏览(33)
  • 使用OAuth2认证结合EWS实现实时读取邮件功能

    公司之前有一个进行邮件获取的功能,使用ExchangeService+TLS1.2认证的方式,但是由于微软将要将这种认证方式列为Legacy authentication,且将在2022年10月下载该认证方式。因此将尝试使用OAuth+EWS这种认证的方式。别问问啥必须用微软系的功能,问就是公司硬性要求。 如下为更改通

    2024年02月06日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包