邮件开发:复杂邮件的一个示例

/**
 *中文附件名_回信地址_友好名称
 *
 */
public class ComplexMail {
    public static void main(String[] args) throws Exception{
//        System.setProperty("socksProxyHost", "proxy2.lh.petrochina");
//        System.setProperty("socksProxyPort", "8080");

        Properties props = new Properties();
         props.setProperty("mail.smtp.auth", "true");
        props.setProperty("mail.transport.protocol", "smtp");
        props.setProperty("mail.host", "smtp.sohu.com");

        Session session = Session.getInstance(props,
                new Authenticator()
                {
                    @Override/*策略模式,代码封装*/
                    protected PasswordAuthentication getPasswordAuthentication()
                    {
                        return new PasswordAuthentication("xxssyyyyssxx","xsy881026");
                    }
                }

        );
        session.setDebug(true);
        
        
        MimeMessage msg = new MimeMessage(session);
        /*发送人*/
        msg.setFrom(new InternetAddress("xxssyyyyssxx@sohu.com"));
        msg.setSubject("复杂邮件生产");        

        /*回复人,如果不设置表示回复给发送人*/
         msg.setReplyTo(new Address[]{new InternetAddress("yanshixiong@126.com")});
        //msg.setRecipients(RecipientType.TO,InternetAddress.parse(MimeUtility.encodeText("熊诗言") + " <xxssyyyyssxx@sohu.com>," + MimeUtility.encodeText("熊诗言") + " <xxssyyyyssxx@126.com>"));
        msg.setRecipients(RecipientType.TO,InternetAddress.parse("xxssyyyyssxx@126.com"));

        
        //邮件是一个multipart/mixed复杂对象
        /*设置为mixed,related,alternative不然会出现ParseException*/
         MimeMultipart msgMultipart = new MimeMultipart("mixed");
        msg.setContent(msgMultipart);


        /*附件1*/
        MimeBodyPart attch1 = new MimeBodyPart();        
        /*附件2*/
        MimeBodyPart attch2 = new MimeBodyPart();        
        /*具体内容*/
        MimeBodyPart content = new MimeBodyPart();
        msgMultipart.addBodyPart(attch1);        
        msgMultipart.addBodyPart(attch2);        
        msgMultipart.addBodyPart(content);

        /*附件1的设置*/
         DataSource ds1 = new FileDataSource(
                "D:\\Users\\熊诗言\\Desktop\\javamail\\src\\resource\\Java培训.txt"    
            );
        DataHandler dh1 = new DataHandler(ds1 );
        attch1.setDataHandler(dh1);
        /*使用MimeUtility.encodeText进行中文编码,否则显示不出来*/
        attch1.setFileName(
                MimeUtility.encodeText("java培训.txt")
                 //首先你的中文编码是什么?然后对中文编码的二进制进行QuotedPrintable或者Base64编码
                //=?UTF-8?Q?.....?=
                //=?GBK?B?.....?=
                );

        /*附件2的设置*/
        DataSource ds2 = new FileDataSource(
                "D:\\Users\\熊诗言\\Desktop\\javamail\\src\\resource\\slogo.gif"        
            );
        DataHandler dh2 = new DataHandler(ds2 );
        attch2.setDataHandler(dh2);        
        attch2.setFileName("slogo.gif");
        
        /*content是一个multipart/related复杂对象*/
        MimeMultipart bodyMultipart = new MimeMultipart("related");
        content.setContent(bodyMultipart);
        /*内容有html和图片*/
         MimeBodyPart htmlPart = new MimeBodyPart();        /*这个也可以设置成为纯文本和HTML的alternative*/
        MimeBodyPart gifPart = new MimeBodyPart();        
        bodyMultipart.addBodyPart(htmlPart);
        bodyMultipart.addBodyPart(gifPart);        

        /*html部分呢*/
        htmlPart.setContent("你们的Java培训真的是最牛的吗?大家都这么说,我想跟你们比试一下!这可是我自己用程序生成和发送的邮件哦!<img src='cid:http://www.itcast.cn/logo.gif'>"
                    , "text/html;charset=gbk");

        /*图片部分呢*/
        DataSource gifds = new FileDataSource(
                "D:\\Users\\熊诗言\\Desktop\\javamail\\src\\resource\\logo.gif"    
            );
        DataHandler gifdh = new DataHandler(gifds);        
        gifPart.setDataHandler(gifdh);
        gifPart.setHeader("Content-ID", "http://www.itcast.cn/logo.gif");//被别的引用CID:XXXXXX
        
        /*内容生产完事儿了一定保存*/
        msg.saveChanges();

        
        /*保存到文件中*/
        OutputStream ips = new FileOutputStream("demo2.eml");
        msg.writeTo(ips);
        ips.close();
        
        Transport.send(msg);
    }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,这是一个后端开发示例: 假设我们要开发一个网站,该网站允许用户注册和登录,并具有以下功能: 1. 用户注册:当用户访问注册页面时,后端应该提供一个表单,允许用户输入用户名、密码、电子邮件地址等信息。当用户提交表单时,后端应该验证输入的信息是否有效,并在数据库中创建一条新记录,记录该用户的信息。 2. 用户登录:当用户访问登录页面时,后端应该提供一个表单,允许用户输入用户名和密码。当用户提交表单时,后端应该验证输入的用户名和密码是否有效,如果有效则允许用户登录,并创建一个会话。 3. 查看用户信息:当已登录的用户访问“个人信息”页面时,后端应该返回该用户的个人信息,包括用户名、电子邮件地址等。 4. 修改用户信息:当已登录的用户访问“修改信息”页面时,后端应该提供一个表单,允许用户修改自己的个人信息 ### 回答2: 在后端开发中,一个常见的示例是创建一个简单的用户管理系统。以下是一个使用Node.js和Express框架来编写的简单示例: 首先,我们需要创建一个Express应用并设置路由。在app.js文件中引入必要的模块和依赖: ```javascript const express = require('express'); const app = express(); const bodyParser = require('body-parser'); app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: true })); // 路由示例 app.get('/', (req, res) => { res.send('欢迎访问用户管理系统'); }); app.get('/users', (req, res) => { // 返回所有用户 res.json({ message: '获取用户列表' }); }); app.post('/users', (req, res) => { // 创建新用户 const { name, email } = req.body; res.json({ message: `创建新用户 ${name} (${email})` }); }); app.put('/users/:id', (req, res) => { // 更新特定用户 const userId = req.params.id; const { name, email } = req.body; res.json({ message: `更新用户 ${userId}: ${name} (${email})` }); }); app.delete('/users/:id', (req, res) => { // 删除特定用户 const userId = req.params.id; res.json({ message: `删除用户 ${userId}` }); }); app.listen(3000, () => { console.log('应用已启动,监听端口3000'); }); ``` 以上示例代码创建了四个路由:获取用户列表的GET请求、创建新用户的POST请求、更新特定用户的PUT请求和删除特定用户的DELETE请求。请求参数通过req.body获取,并根据请求的不同返回相应的响应。 最后,通过运行该应用,它将在本地主机上的端口3000上启动并监听来自客户端的请求。您可以使用Postman等工具来测试该应用的各个路由。 这只是一个简单的后端开发示例,实际的开发中往往涉及更多功能和复杂的业务逻辑。通过这个示例,您可以熟悉后端开发的基本概念和流程,并在实际项目中进行更复杂开发和调试。 ### 回答3: 后端开发是指在软件开发过程中负责处理服务器端逻辑和数据存储的部分。下面是一个简单的后端开发示例: 假设我们正在开发一个简单的博客应用,需要实现用户登录、文章创建和查询等功能。 首先,我们需要搭建一个服务器环境,可以使用Node.js平台和Express框架来快速构建。在服务器端,我们可以创建一个名为server.js的文件,并在其中编写后端逻辑。 首先,我们需要引入所需的模块和中间件。使用npm安装所需的模块,例如body-parser用于解析请求体、jsonwebtoken用于生成和验证身份验证令牌等。 然后,我们可以创建一个Express应用,并设置一些全局中间件,例如body-parser中间件。 接下来,我们可以定义一些路由来处理不同的请求。例如,我们可以创建一个用户登录的路由,当接收到POST请求时,我们可以从请求体中获取用户名和密码,并验证其有效性。如果验证通过,我们可以生成一个JWT令牌并将其返回给客户端。 另外,我们还可以创建一个文章创建的路由,当接收到POST请求时,我们可以从请求体中获取文章标题和内容,并将其存储到数据库中。 最后,我们还可以创建一个文章查询的路由,当接收到GET请求时,我们可以从数据库中获取存储的文章,并将其返回给客户端。 在处理请求的过程中,我们可以使用数据库工具来连接和操作数据库,例如使用Mongoose连接MongoDB数据库。 以上仅为一个简单的后端开发示例,实际的后端开发可能涉及更复杂的逻辑和组件。编写一个高质量的后端应用需要考虑安全性、性能、可扩展性等方面的问题,并遵循行业的最佳实践。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值