「qq群发java」群发在哪里

博主:adminadmin 2022-11-29 05:43:07 58

本篇文章给大家谈谈qq群发java,以及群发在哪里对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

java可以实现群发消息到腾讯通RTX提醒吗

RTX消息提醒接口只能发送字符串

RootObj.SendNotify(str1, title, 0, content);

0代表消息提醒停留时间为永久,直到手动关闭

javaweb怎么实现邮件的群发功能

import javax.activation.DataHandler;

import javax.activation.FileDataSource;

import javax.mail.Authenticator;

import javax.mail.Message;

import javax.mail.MessagingException;

import javax.mail.Multipart;

import javax.mail.PasswordAuthentication;

import javax.mail.Session;

import javax.mail.Transport;

import javax.mail.internet.InternetAddress;

import javax.mail.internet.MimeBodyPart;

import javax.mail.internet.MimeMessage;

import javax.mail.internet.MimeMultipart;

import javax.mail.internet.MimeUtility;

/**

* Title: 使用javamail发送邮件 Description: 演示如何使用javamail包发送电子邮件。这个实例可发送多附件

*

* @version 1.0

*/

public class SendMail {

String to = "";// 收件人

String from = "";// 发件人

String host = "";// smtp主机

String username = "";

String password = "";

String filename = "";// 附件文件名

String subject = "";// 邮件主题

String content = "";// 邮件正文

@SuppressWarnings("rawtypes")

Vector file = new Vector();// 附件文件集合

/**

* br

* 方法说明:默认构造器 br

* 输入参数: br

* 返回类型:

*/

public SendMail() {

}

/**

* br

* 方法说明:构造器,提供直接的参数传入 br

* 输入参数: br

* 返回类型:

*/

public SendMail(String to, String from, String smtpServer, String username,

String password, String subject, String content) {

this.to = to;

this.from = from;

this.host = smtpServer;

this.username = username;

this.password = password;

this.subject = subject;

this.content = content;

}

/**

* br

* 方法说明:设置邮件服务器地址 br

* 输入参数:String host 邮件服务器地址名称 br

* 返回类型:

*/

public void setHost(String host) {

this.host = host;

}

/**

* br

* 方法说明:设置登录服务器校验密码 br

* 输入参数: br

* 返回类型:

*/

public void setPassWord(String pwd) {

this.password = pwd;

}

/**

* br

* 方法说明:设置登录服务器校验用户 br

* 输入参数: br

* 返回类型:

*/

public void setUserName(String usn) {

this.username = usn;

}

/**

* br

* 方法说明:设置邮件发送目的邮箱 br

* 输入参数: br

* 返回类型:

*/

public void setTo(String to) {

this.to = to;

}

/**

* br

* 方法说明:设置邮件发送源邮箱 br

* 输入参数: br

* 返回类型:

*/

public void setFrom(String from) {

this.from = from;

}

/**

* br

* 方法说明:设置邮件主题 br

* 输入参数: br

* 返回类型:

*/

public void setSubject(String subject) {

this.subject = subject;

}

/**

* br

* 方法说明:设置邮件内容 br

* 输入参数: br

* 返回类型:

*/

public void setContent(String content) {

this.content = content;

}

/**

* br

* 方法说明:把主题转换为中文 br

* 输入参数:String strText br

* 返回类型:

*/

public String transferChinese(String strText) {

try {

strText = MimeUtility.encodeText(new String(strText.getBytes(),

"GB2312"), "GB2312", "B");

} catch (Exception e) {

e.printStackTrace();

}

return strText;

}

/**

* br

* 方法说明:往附件组合中添加附件 br

* 输入参数: br

* 返回类型:

*/

@SuppressWarnings("unchecked")

public void attachfile(String fname) {

file.addElement(fname);

}

/**

* br

* 方法说明:发送邮件 br

* 输入参数: br

* 返回类型:boolean 成功为true,反之为false

*/

@SuppressWarnings("rawtypes")

public boolean sendMail() {

// 构造mail session

Properties props = System.getProperties();

props.put("mail.smtp.host", host);

props.put("mail.smtp.auth", "true");

Session session = Session.getDefaultInstance(props,

new Authenticator() {

public PasswordAuthentication getPasswordAuthentication() {

return new PasswordAuthentication(username, password);

}

});

try {

// 构造MimeMessage 并设定基本的值

MimeMessage msg = new MimeMessage(session);

msg.setFrom(new InternetAddress(from));

InternetAddress[] address = { new InternetAddress(to) };

msg.setRecipients(Message.RecipientType.TO, address);

//subject = transferChinese(subject); ##修改过原来显示成乱码 注释掉这行 腾讯企业邮箱显示良好

msg.setSubject(subject);

// 构造Multipart

Multipart mp = new MimeMultipart();

// 向Multipart添加正文

MimeBodyPart mbpContent = new MimeBodyPart();

mbpContent.setText(content);

// 向MimeMessage添加(Multipart代表正文)

mp.addBodyPart(mbpContent);

// 向Multipart添加附件

Enumeration efile = file.elements();

while (efile.hasMoreElements()) {

MimeBodyPart mbpFile = new MimeBodyPart();

filename = efile.nextElement().toString();

FileDataSource fds = new FileDataSource(filename);

mbpFile.setDataHandler(new DataHandler(fds));

mbpFile.setFileName(fds.getName());

// 向MimeMessage添加(Multipart代表附件)

mp.addBodyPart(mbpFile);

}

file.removeAllElements();

// 向Multipart添加MimeMessage

msg.setContent(mp);

msg.setSentDate(new Date());

// 发送邮件

Transport.send(msg);

} catch (MessagingException mex) {

mex.printStackTrace();

Exception ex = null;

if ((ex = mex.getNextException()) != null) {

ex.printStackTrace();

}

return false;

}

return true;

}

/**

* br

* 方法说明:主方法,用于测试 br

* 输入参数: br

* 返回类型:

*/

public static void main(String[] args) {

SendMail sendmail = new SendMail();

sendmail.setHost("smtp.exmail.qq.com");// smtp.mail.yahoo.com.cn

sendmail.setUserName("1@qq.com");// 您的邮箱用户名

sendmail.setPassWord("XXX");// 您的邮箱密码

sendmail.setFrom("1@qq.com");// 发送者

//这里可以从数据库动态读取要发送的邮箱,为了测试,先写死

sendmail.setTo("TO1@qq.com");// 接收者

sendmail.setSubject("测试群发邮件");

sendmail.setContent("这是群发邮件测试");

//sendmail.attachfile("d:/me.jpg");

sendmail.sendMail();

sendmail.setTo("TO2@nxp.cn");// 接收者

sendmail.sendMail();

}

如何写一个JAVA类可以实现邮件发送功能,也可以实现群发功能

package byd.core;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

import java.net.Socket;

import java.nio.charset.Charset;

import java.text.SimpleDateFormat;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import sun.misc.BASE64Encoder;

/**

 * 该类使用Socket连接到邮件服务器, 并实现了向指定邮箱发送邮件及附件的功能。

 * 

 * @author Kou Hongtao

 */

public class Email {

    /**

     * 换行符

     */

    private static final String LINE_END = "\r\n";

    /**

     * 值为“true”输出高度信息(包括服务器响应信息),值为“ false”则不输出调试信息。

     */

    private boolean isDebug = true;

    /**

     * 值为“true”则在发送邮件{@link Mail#send()} 过程中会读取服务器端返回的消息,

     * 并在邮件发送完毕后将这些消息返回给用户。

     */

    private boolean isAllowReadSocketInfo = true;

    /**

     * 邮件服务器地址

     */

    private String host;

    /**

     * 发件人邮箱地址

     */

    private String from;

    /**

     * 收件人邮箱地址

     */

    private ListString to;

    /**

     * 抄送地址

     */

    private ListString cc;

    /**

     * 暗送地址

     */

    private ListString bcc;

    /**

     * 邮件主题

     */

    private String subject;

    /**

     * 用户名

     */

    private String user;

    /**

     * 密码

     */

    private String password;

    /**

     * MIME邮件类型

     */

    private String contentType;

    /**

     * 用来绑定多个邮件单元{@link #partSet}

     * 的分隔标识,我们可以将邮件的正文及每一个附件都看作是一个邮件单元 。

     */

    private String boundary;

    /**

     * 邮件单元分隔标识符,该属性将用来在邮件中作为分割各个邮件单元的标识 。

     */

    private String boundaryNextPart;

    /**

     * 传输邮件所采用的编码

     */

    private String contentTransferEncoding;

    /**

     * 设置邮件正文所用的字符集

     */

    private String charset;

    /**

     * 内容描述

     */

    private String contentDisposition;

    /**

     * 邮件正文

     */

    private String content;

    /**

     * 发送邮件日期的显示格式

     */

    private String simpleDatePattern;

    /**

     * 附件的默认MIME类型

     */

    private String defaultAttachmentContentType;

    /**

     * 邮件单元的集合,用来存放正文单元和所有的附件单元。

     */

    private ListMailPart partSet;

    private ListMailPart alternativeList;

    private String mixedBoundary;

    private String mixedBoundaryNextPart;

    /**

     * 不同类型文件对应的{@link MIME} 类型映射。在添加附件

     * {@link #addAttachment(String)} 时,程序会在这个映射中查找对应文件的

     * {@link MIME} 类型,如果没有, 则使用

     * {@link #defaultAttachmentContentType} 所定义的类型。

     */

    private static MapString, String contentTypeMap;

    private static enum TextType {

        PLAIN("plain"), HTML("html");

        private String v;

        private TextType(String v) {

            this.v = v;

        }

        public String getValue() {

            return this.v;

        }

    }

    static {

        // MIME Media Types

        contentTypeMap = new HashMapString, String();

        contentTypeMap.put("xls", "application/vnd.ms-excel");

        contentTypeMap.put("xlsx", "application/vnd.ms-excel");

        contentTypeMap.put("xlsm", "application/vnd.ms-excel");

        contentTypeMap.put("xlsb", "application/vnd.ms-excel");

        contentTypeMap.put("doc", "application/msword");

        contentTypeMap.put("dot", "application/msword");

        contentTypeMap.put("docx", "application/msword");

        contentTypeMap.put("docm", "application/msword");

        contentTypeMap.put("dotm", "application/msword");

    }

    /**

     * 该类用来实例化一个正文单元或附件单元对象,他继承了 {@link Mail}

     * ,在这里制作这个子类主要是为了区别邮件单元对象和邮件服务对象 ,使程序易读一些。

     * 这些邮件单元全部会放到partSet 中,在发送邮件 {@link #send()}时, 程序会调用

     * {@link #getAllParts()} 方法将所有的单元合并成一个符合MIME格式的字符串。

     * 

     * @author Kou Hongtao

     */

    private class MailPart extends Email {

        public MailPart() {

        }

    }

    /**

     * 默认构造函数

     */

    public Email() {

        defaultAttachmentContentType = "application/octet-stream";

        simpleDatePattern = "yyyy-MM-dd HH:mm:ss";

        boundary = "--=_NextPart_zlz_3907_" + System.currentTimeMillis();

        boundaryNextPart = "--" + boundary;

        contentTransferEncoding = "base64";

        contentType = "multipart/mixed";

        charset = Charset.defaultCharset().name();

        partSet = new ArrayListMailPart();

        alternativeList = new ArrayListMailPart();

        to = new ArrayListString();

        cc = new ArrayListString();

        bcc = new ArrayListString();

        mixedBoundary = "=NextAttachment_zlz_" + System.currentTimeMillis();

        mixedBoundaryNextPart = "--" + mixedBoundary;

    }

    /**

     * 根据指定的完整文件名在 {@link #contentTypeMap} 中查找其相应的MIME类型,

     * 如果没找到,则返回 {@link #defaultAttachmentContentType}

     * 所指定的默认类型。

     * 

     * @param fileName

     *            文件名

     * @return 返回文件对应的MIME类型。

     */

    private String getPartContentType(String fileName) {

        String ret = null;

        if (null != fileName) {

            int flag = fileName.lastIndexOf(".");

            if (0 = flag  flag  fileName.length() - 1) {

                fileName = fileName.substring(flag + 1);

            }

            ret = contentTypeMap.get(fileName);

        }

        if (null == ret) {

            ret = defaultAttachmentContentType;

        }

        return ret;

    }

    /**

     * 将给定字符串转换为base64编码的字符串

     * 

     * @param str

     *            需要转码的字符串

     * @param charset

     *            原字符串的编码格式

     * @return base64编码格式的字符

     */

    private String toBase64(String str, String charset) {

        if (null != str) {

            try {

                return toBase64(str.getBytes(charset));

            } catch (UnsupportedEncodingException e) {

                e.printStackTrace();

            }

        }

        return "";

    }

    /**

     * 将指定的字节数组转换为base64格式的字符串

     * 

     * @param bs

     *            需要转码的字节数组

     * @return base64编码格式的字符

     */

    private String toBase64(byte[] bs) {

        return new BASE64Encoder().encode(bs);

    }

    /**

     * 将给定字符串转换为base64编码的字符串

     * 

     * @param str

     *            需要转码的字符串

     * @return base64编码格式的字符

     */

    private String toBase64(String str) {

        return toBase64(str, Charset.defaultCharset().name());

    }

    /**

     * 将所有的邮件单元按照标准的MIME格式要求合并。

     * 

     * @return 返回一个所有单元合并后的字符串。

     */

    private String getAllParts() {

        StringBuilder sbd = new StringBuilder(LINE_END);

        sbd.append(mixedBoundaryNextPart);

        sbd.append(LINE_END);

        sbd.append("Content-Type: ");

        sbd.append("multipart/alternative");

        sbd.append(";");

        sbd.append("boundary=\"");

        sbd.append(boundary).append("\""); // 邮件类型设置

        sbd.append(LINE_END);

        sbd.append(LINE_END);

        sbd.append(LINE_END);

        addPartsToString(alternativeList, sbd, getBoundaryNextPart());

        sbd.append(getBoundaryNextPart()).append("--");

        sbd.append(LINE_END);

        addPartsToString(partSet, sbd, mixedBoundaryNextPart);

        sbd.append(LINE_END);

        sbd.append(mixedBoundaryNextPart).append("--");

        sbd.append(LINE_END);

        // sbd.append(boundaryNextPart).

        // append(LINE_END);

        alternativeList.clear();

        partSet.clear();

        return sbd.toString();

    }

    private void addPartsToString(ListMailPart list, StringBuilder sbd,

            String nextPartString) {

        int partCount = list.size();

        for (int i = 0; i  partCount; i++) {

            Email attachment = list.get(i);

            String attachmentContent = attachment.getContent();

            if (null != attachmentContent  0  attachmentContent.length()) {

                sbd.append(nextPartString).append(LINE_END);

                sbd.append("Content-Type: ");

                sbd.append(attachment.getContentType());

                sbd.append(LINE_END);

                sbd.append("Content-Transfer-Encoding: ");

                sbd.append(attachment.getContentTransferEncoding());

                sbd.append(LINE_END);

                String cd = attachment.getContentDisposition();

                if (null != cd) {

                    sbd.append("Content-Disposition: ");

                    sbd.append(cd);

                    sbd.append(LINE_END);

                }

                sbd.append(LINE_END);

                sbd.append(attachmentContent);

                sbd.append(LINE_END);

            }

        }

    }

    /**

     * 添加邮件正文单元

     */

    private void addContent() {

        if (null != content) {

            MailPart part = new MailPart();

            part.setContent(toBase64(content));

            part.setContentType("text/plain;charset=\"" + charset + "\"");

            alternativeList.add(part);

        }

    }

    private String listToMailString(ListString mailAddressList) {

        StringBuilder sbd = new StringBuilder();

        if (null != mailAddressList) {

            int listSize = mailAddressList.size();

            for (int i = 0; i  listSize; i++) {

                if (0 != i) {

                    sbd.append(";");

                }

                sbd.append("").append(mailAddressList.get(i)).append("");

            }

        }

        return sbd.toString();

    }

    private ListString getrecipient() {

        ListString list = new ArrayListString();

        list.addAll(to);

        list.addAll(cc);

        list.addAll(bcc);

        return list;

    }

    /**

     * 添加超文本内容

     * 

     * @param text

     */

    public void addHtmlContent(String text) {

        addContent(text, TextType.HTML);

    }

    /**

     * 添加纯文本内容

     * 

     * @param text

     */

    public void addTextContent(String text) {

        addContent(text, TextType.PLAIN);

    }

    private void addContent(String text, TextType type) {

        if (null != text) {

            MailPart part = new MailPart();

            part.setContent(toBase64(text));

            part.setContentType("text/" + type.getValue() + ";charset=\""

                    + charset + "\"");

            alternativeList.add(part);

        }

    }

java如何实现批量发送邮件

1.要想效率发邮件可以用多线程每个线程发指定批量的邮件

2.要想不被查封为垃圾邮件,这个就有很多地方要注意了

邮件的内容不要含有太多图片信息,内容尽量简洁,不要涉及一些淫秽色情的东西。

不要向同一个人发送同样的邮件。

发邮件时ip最好用代理每发送个50封邮件就换个ip,因为邮件服务器也会检查你ip在这么短时间发了这么多邮件也会认为你是恶意群发。

最好能加入邮件接收者的白名单或订阅名单

如何用java编写QQ群发软件?

qq的协议时udp,你首先要用socket模仿udp的数据包,然后调用qq的服务器文件,每个群有指定的服务器标识号,只用向指定的服务器发送你事先模仿的数据包就ok了,我可以给个qq在dos下运行的例子

Java:写一个服务端群发的线程程序段。

用一个Vector或者HashMap来保存线程实例,群发就遍历并调用SendMessage方法。

qq群发java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于群发在哪里、qq群发java的信息别忘了在本站进行查找喔。

The End

发布于:2022-11-29,除非注明,否则均为首码项目网原创文章,转载请注明出处。