精华内容
下载资源
问答
  • 能发邮件的临时邮箱

    万次阅读 2019-09-12 21:00:44
    邮件的收、发是一个邮箱应该具备的最基本功能,免费的临时邮箱或一次性邮箱虽然有很多,但支持邮件发送的屈指可数,Guerrilla Mail于2006年建立,支持中文、英文、法语、西班牙语、日语等多种语言,并提供安卓客户端...

    邮件的收、发是一个邮箱应该具备的最基本功能,免费的临时邮箱或一次性邮箱虽然有很多,但支持邮件发送的屈指可数,Guerrilla Mail于2006年建立,支持中文、英文、法语、西班牙语、日语等多种语言,并提供安卓客户端,还可以通过TOR网络访问。

    邮箱的使用非常简单,打开邮箱网址www.guerrillamail.com就会自动生成一个持续60分钟的免费临时邮箱,邮箱地址可以自己设定,也可以使用系统自动生成的随机地址。
    在这里插入图片描述

    • 收件箱

    收到邮件后可回复、转发以及查看邮件原始源码。

    • COMPOSE

    每次只能添加一个邮箱地址,不支持抄送及密送,可添加附件,最大支持150MB,24小时后自动删除。

    • TOOLS

    用于生成密码,输入“Domain”和“Master Passphrass”自动生成密码。

    • 简介

    就是简介。

    如果想使用自己的域名可通过https://grr.la/ryo/guerrillamail.com/edit注册账户进行设置。除此之外,Guerrilla Mail也是一个开源项目,源码托管于Github: https://github.com/flashmob/go-guerrilla,可自己搭建服务器。

    展开全文
  • php实现发送邮件,ssl版,QQ邮箱可用,有些同学的实现不了是因为端口用的默认的25,阿里云服务器屏蔽了25端口,现在我们用465端口,亲测可用,已经解决各种问题 现在我们先贴上邮箱发送的类代码 <?php /** *...

    php实现发送邮件,ssl版,QQ邮箱可用,有些同学的实现不了是因为端口用的默认的25,阿里云服务器屏蔽了25端口,现在我们用465端口,亲测可用,已经解决各种问题

    现在我们先贴上邮箱发送的类代码

    <?php
    /**
     * 一个简单的PHP SMTP 发送邮件类
     */
    
    class Lib_Smtp {
        /**
         * @var string 邮件传输代理用户名
         * @access private
         */
        private $_userName;
    
        /**
         * @var string 邮件传输代理密码
         * @access private
         */
        private $_password;
    
        /**
         * @var string 邮件传输代理服务器地址
         * @access private
         */
        private $_sendServer;
    
        /**
         * @var int 邮件传输代理服务器端口
         * @access private
         */
        private $_port;
    
        /**
         * @var string 发件人
         * @access protected
         */
        protected $_from;
    
        /**
         * @var string 收件人
         * @access protected
         */
        protected $_to;
    
        /**
         * @var string 抄送
         * @access protected
         */
        protected $_cc;
    
        /**
         * @var string 秘密抄送
         * @access protected
         */
        protected $_bcc;
    
        /**
         * @var string 主题
         * @access protected
         */
        protected $_subject;
    
        /**
         * @var string 邮件正文
         * @access protected
         */
        protected $_body;
    
        /**
         * @var string 附件
         * @access protected
         */
        protected $_attachment;
    
        /**
         * @var reource socket资源
         * @access protected
         */
        protected $_socket;
    
        /**
         * @var reource 是否是安全连接
         * @access protected
         */
        protected $_isSecurity;
    
        /**
         * @var string 错误信息
         * @access protected
         */
        protected $_errorMessage;
    
        protected $_debug = false;
        /*输出调试信息*/
        private function debug($msg){
            if($this->_debug){
                echo $msg ,'<br>',"\n";
            }
        }
        public function setDebug($val=true){
            $this->_debug=$val;
        }
    
        /**
         * 设置邮件传输代理,如果是可以匿名发送有邮件的服务器,只需传递代理服务器地址就行
         * @access public
         * @param string $server 代理服务器的ip或者域名
         * @param string $username 认证账号
         * @param string $password 认证密码
         * @param int $port 代理服务器的端口,smtp默认25号端口
         * @param boolean $isSecurity 到服务器的连接是否为安全连接,默认false
         * @return boolean
         */
        public function setServer($server, $username="", $password="", $port=25, $isSecurity=false) {
            $this->_sendServer = $server;
            $this->_port = $port;
            $this->_isSecurity = $isSecurity;
            $this->_userName = empty($username) ? "" : base64_encode($username);
            $this->_password = empty($password) ? "" : base64_encode($password);
            return true;
        }
    
        /**
         * 设置发件人
         * @access public
         * @param string $from 发件人地址
         * @return boolean
         */
        public function setFrom($from) {
            $this->_from = $from;
            return true;
        }
    
        /**
         * 设置收件人,多个收件人,调用多次.
         * @access public
         * @param string $to 收件人地址
         * @return boolean
         */
        public function setReceiver($to) {
            if(isset($this->_to)) {
                if(is_string($this->_to)) {
                    $this->_to = array($this->_to);
                    $this->_to[] = $to;
                    return true;
                }
                elseif(is_array($this->_to)) {
                    $this->_to[] = $to;
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                $this->_to = $to;
                return true;
            }
        }
    
        /**
         * 设置抄送,多个抄送,调用多次.
         * @access public
         * @param string $cc 抄送地址
         * @return boolean
         */
        public function setCc($cc) {
            if(isset($this->_cc)) {
                if(is_string($this->_cc)) {
                    $this->_cc = array($this->_cc);
                    $this->_cc[] = $cc;
                    return true;
                }
                elseif(is_array($this->_cc)) {
                    $this->_cc[] = $cc;
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                $this->_cc = $cc;
                return true;
            }
        }
    
        /**
         * 设置秘密抄送,多个秘密抄送,调用多次
         * @access public
         * @param string $bcc 秘密抄送地址
         * @return boolean
         */
        public function setBcc($bcc) {
            if(isset($this->_bcc)) {
                if(is_string($this->_bcc)) {
                    $this->_bcc = array($this->_bcc);
                    $this->_bcc[] = $bcc;
                    return true;
                }
                elseif(is_array($this->_bcc)) {
                    $this->_bcc[] = $bcc;
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                $this->_bcc = $bcc;
                return true;
            }
        }
    
        /**
         * 设置邮件附件,多个附件,调用多次
         * @access public
         * @param string $file 文件地址
         * @return boolean
         */
        public function addAttachment($file) {
            if(!file_exists($file)) {
                $this->_errorMessage = "file " . $file . " does not exist.";
                return false;
            }
            if(isset($this->_attachment)) {
                if(is_string($this->_attachment)) {
                    $this->_attachment = array($this->_attachment);
                    $this->_attachment[] = $file;
                    return true;
                }
                elseif(is_array($this->_attachment)) {
                    $this->_attachment[] = $file;
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                $this->_attachment = $file;
                return true;
            }
        }
    
        /**
         * 设置邮件信息
         * @access public
         * @param string $body 邮件主题
         * @param string $subject 邮件主体内容,可以是纯文本,也可是是HTML文本
         * @return boolean
         */
        public function setMail($subject, $body) {
            $this->_subject = $subject;
            $this->_body = base64_encode($body);
            return true;
        }
    
        /**
         * 发送邮件
         * @access public
         * @return boolean
         */
        public function send() {
            $command = $this->getCommand();
    
            $this->_isSecurity ? $this->socketSecurity() : $this->socket();
    
            foreach ($command as $value) {
                $result = $this->_isSecurity ? $this->sendCommandSecurity($value[0], $value[1]) : $this->sendCommand($value[0], $value[1]);
                if($result) {
                    continue;
                }
                else{
                    return false;
                }
            }
    
            //其实这里也没必要关闭,smtp命令:QUIT发出之后,服务器就关闭了连接,本地的socket资源会自动释放
            $this->_isSecurity ? $this->closeSecutity() : $this->close();
            return true;
        }
    
        /**
         * 返回错误信息
         * @return string
         */
        public function error(){
            if(!isset($this->_errorMessage)) {
                $this->_errorMessage = "";
            }
            return $this->_errorMessage;
        }
    
        /**
         * 返回mail命令
         * @access protected
         * @return array
         */
        protected function getCommand() {
            $separator = "----=_Part_" . md5($this->_from . time()) . uniqid(); //分隔符
    
            $command = array(
                array("HELO sendmail\r\n", 250)
            );
            if(!empty($this->_userName)){
                $command[] = array("AUTH LOGIN\r\n", 334);
                $command[] = array($this->_userName . "\r\n", 334);
                $command[] = array($this->_password . "\r\n", 235);
            }
    
            //设置发件人
            $command[] = array("MAIL FROM: <" . $this->_from . ">\r\n", 250);
            $header = "FROM: <" . $this->_from . ">\r\n";
    
            //设置收件人
            if(is_array($this->_to)) {
                $count = count($this->_to);
                for($i=0; $i<$count; $i++){
                    $command[] = array("RCPT TO: <" . $this->_to[$i] . ">\r\n", 250);
                    if($i == 0){
                        $header .= "TO: <" . $this->_to[$i] .">";
                    }
                    elseif($i + 1 == $count){
                        $header .= ",<" . $this->_to[$i] .">\r\n";
                    }
                    else{
                        $header .= ",<" . $this->_to[$i] .">";
                    }
                }
            }
            else{
                $command[] = array("RCPT TO: <" . $this->_to . ">\r\n", 250);
                $header .= "TO: <" . $this->_to . ">\r\n";
            }
    
            //设置抄送
            if(isset($this->_cc)) {
                if(is_array($this->_cc)) {
                    $count = count($this->_cc);
                    for($i=0; $i<$count; $i++){
                        $command[] = array("RCPT TO: <" . $this->_cc[$i] . ">\r\n", 250);
                        if($i == 0){
                            $header .= "CC: <" . $this->_cc[$i] .">";
                        }
                        elseif($i + 1 == $count){
                            $header .= ",<" . $this->_cc[$i] .">\r\n";
                        }
                        else{
                            $header .= ",<" . $this->_cc[$i] .">";
                        }
                    }
                }
                else{
                    $command[] = array("RCPT TO: <" . $this->_cc . ">\r\n", 250);
                    $header .= "CC: <" . $this->_cc . ">\r\n";
                }
            }
    
            //设置秘密抄送
            if(isset($this->_bcc)) {
                if(is_array($this->_bcc)) {
                    $count = count($this->_bcc);
                    for($i=0; $i<$count; $i++){
                        $command[] = array("RCPT TO: <" . $this->_bcc[$i] . ">\r\n", 250);
                        if($i == 0){
                            $header .= "BCC: <" . $this->_bcc[$i] .">";
                        }
                        elseif($i + 1 == $count){
                            $header .= ",<" . $this->_bcc[$i] .">\r\n";
                        }
                        else{
                            $header .= ",<" . $this->_bcc[$i] .">";
                        }
                    }
                }
                else{
                    $command[] = array("RCPT TO: <" . $this->_bcc . ">\r\n", 250);
                    $header .= "BCC: <" . $this->_bcc . ">\r\n";
                }
            }
    
            //主题
            $header .= "Subject: " . $this->_subject ."\r\n";
            if(isset($this->_attachment)) {
                //含有附件的邮件头需要声明成这个
                $header .= "Content-Type: multipart/mixed;\r\n";
            }
            elseif(false){
                //邮件体含有图片资源的需要声明成这个
                $header .= "Content-Type: multipart/related;\r\n";
            }
            else{
                //html或者纯文本的邮件声明成这个
                $header .= "Content-Type: multipart/alternative;\r\n";
            }
    
            //邮件头分隔符
            $header .= "\t" . 'boundary="' . $separator . '"';
            $header .= "\r\nMIME-Version: 1.0\r\n";
            $header .= "\r\n--" . $separator . "\r\n";
            $header .= "Content-Type:text/html; charset=utf-8\r\n";
            $header .= "Content-Transfer-Encoding: base64\r\n\r\n";
            $header .= $this->_body . "\r\n";
            $header .= "--" . $separator . "\r\n";
    
            //加入附件
            if(isset($this->_attachment) && !empty($this->_attachment)){
                if(is_array($this->_attachment)){
                    $count = count($this->_attachment);
                    for($i=0; $i<$count; $i++){
                        $header .= "\r\n--" . $separator . "\r\n";
                        $header .= "Content-Type: " . $this->getMIMEType($this->_attachment[$i]) . '; name="' . basename($this->_attachment[$i]) . '"' . "\r\n";
                        $header .= "Content-Transfer-Encoding: base64\r\n";
                        $header .= 'Content-Disposition: attachment; filename="' . basename($this->_attachment[$i]) . '"' . "\r\n";
                        $header .= "\r\n";
                        $header .= $this->readFile($this->_attachment[$i]);
                        $header .= "\r\n--" . $separator . "\r\n";
                    }
                }
                else{
                    $header .= "\r\n--" . $separator . "\r\n";
                    $header .= "Content-Type: " . $this->getMIMEType($this->_attachment) . '; name="' . basename($this->_attachment) . '"' . "\r\n";
                    $header .= "Content-Transfer-Encoding: base64\r\n";
                    $header .= 'Content-Disposition: attachment; filename="' . basename($this->_attachment) . '"' . "\r\n";
                    $header .= "\r\n";
                    $header .= $this->readFile($this->_attachment);
                    $header .= "\r\n--" . $separator . "\r\n";
                }
            }
    
            //结束邮件数据发送
            $header .= "\r\n.\r\n";
    
    
            $command[] = array("DATA\r\n", 354);
            $command[] = array($header, 250);
            $command[] = array("QUIT\r\n", 221);
    
            return $command;
        }
    
        /**
         * 发送命令
         * @access protected
         * @param string $command 发送到服务器的smtp命令
         * @param int $code 期望服务器返回的响应吗
         * @return boolean
         */
        protected function sendCommand($command, $code) {
            //debug('Send command:' . $command . ',expected code:' . $code );
            //发送命令给服务器
            try{
                if(socket_write($this->_socket, $command, strlen($command))){
    
                    //当邮件内容分多次发送时,没有$code,服务器没有返回
                    if(empty($code))  {
                        return true;
                    }
    
                    //读取服务器返回
                    $data = trim(socket_read($this->_socket, 1024));
                    //debug( 'response:' . $data);
    
                    if($data) {
                        $pattern = "/^".$code."/";
                        if(preg_match($pattern, $data)) {
                            return true;
                        }
                        else{
                            $this->_errorMessage = "Error:" . $data . "|**| command:";
                            return false;
                        }
                    }
                    else{
                        $this->_errorMessage = "Error:" . socket_strerror(socket_last_error());
                        return false;
                    }
                }
                else{
                    $this->_errorMessage = "Error:" . socket_strerror(socket_last_error());
                    return false;
                }
            }catch(Exception $e) {
                $this->_errorMessage = "Error:" . $e->getMessage();
            }
        }
    
        /**
         * 发送命令
         * @access protected
         * @param string $command 发送到服务器的smtp命令
         * @param int $code 期望服务器返回的响应吗
         * @return boolean
         */
        protected function sendCommandSecurity($command, $code) {
            //debug('Send command:' . $command . ',expected code:' . $code );
            try {
                if(fwrite($this->_socket, $command)){
                    //当邮件内容分多次发送时,没有$code,服务器没有返回
                    if(empty($code))  {
                        return true;
                    }
                    //读取服务器返回
                    $data = trim(fread($this->_socket, 1024));
                    //debug( 'response:' . $data );
    
                    if($data) {
                        $pattern = "/^".$code."/";
                        if(preg_match($pattern, $data)) {
                            return true;
                        }
                        else{
                            $this->_errorMessage = "Error:" . $data . "|**| command:";
                            return false;
                        }
                    }
                    else{
                        return false;
                    }
                }
                else{
                    $this->_errorMessage = "Error: " . $command . " send failed";
                    return false;
                }
            }catch(Exception $e) {
                $this->_errorMessage = "Error:" . $e->getMessage();
            }
        }
    
        /**
         * 读取附件文件内容,返回base64编码后的文件内容
         * @access protected
         * @param string $file 文件
         * @return mixed
         */
        protected function readFile($file) {
            if(file_exists($file)) {
                $file_obj = file_get_contents($file);
                return base64_encode($file_obj);
            }
            else {
                $this->_errorMessage = "file " . $file . " dose not exist";
                return false;
            }
        }
    
        /**
         * 获取附件MIME类型
         * @access protected
         * @param string $file 文件
         * @return mixed
         */
        protected function getMIMEType($file) {
            if(file_exists($file)) {
                $mime = mime_content_type($file);
                if(! preg_match("/gif|jpg|png|jpeg/", $mime)){
                    $mime = "application/octet-stream";
                }
                return $mime;
            }
            else {
                return false;
            }
        }
    
        /**
         * 建立到服务器的网络连接
         * @access private
         * @return boolean
         */
        private function socket() {
            //创建socket资源
            $this->_socket = socket_create(AF_INET, SOCK_STREAM, getprotobyname('tcp'));
    
            if(!$this->_socket) {
                $this->_errorMessage = socket_strerror(socket_last_error());
                return false;
            }
    
            socket_set_block($this->_socket);//设置阻塞模式
    
            //连接服务器
            if(!socket_connect($this->_socket, $this->_sendServer, $this->_port)) {
                $this->_errorMessage = socket_strerror(socket_last_error());
                return false;
            }
            $str = socket_read($this->_socket, 1024);
            if(!strpos($str, "220")){
                $this->_errorMessage = $str;
                return false;
            }
    
            return true;
        }
    
        /**
         * 建立到服务器的SSL网络连接
         * @access private
         * @return boolean
         */
        private function socketSecurity() {
            $remoteAddr = "tcp://" . $this->_sendServer . ":" . $this->_port;
            $this->_socket = stream_socket_client($remoteAddr, $errno, $errstr, 30);
            if(!$this->_socket){
                $this->_errorMessage = $errstr;
                return false;
            }
    
            //设置加密连接,默认是ssl,如果需要tls连接,可以查看php手册stream_socket_enable_crypto函数的解释
            stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_SSLv23_CLIENT);
    
            stream_set_blocking($this->_socket, 1); //设置阻塞模式
            $str = fread($this->_socket, 1024);
            if(!strpos($str, "220")){
                $this->_errorMessage = $str;
                return false;
            }
    
            return true;
        }
    
        /**
         * 关闭socket
         * @access private
         * @return boolean
         */
        private function close() {
            if(isset($this->_socket) && is_object($this->_socket)) {
                $this->_socket->close();
                return true;
            }
            $this->_errorMessage = "No resource can to be close";
            return false;
        }
    
        /**
         * 关闭安全socket
         * @access private
         * @return boolean
         */
        private function closeSecutity() {
            if(isset($this->_socket) && is_object($this->_socket)) {
                stream_socket_shutdown($this->_socket, STREAM_SHUT_WR);
                return true;
            }
            $this->_errorMessage = "No resource can to be close";
            return false;
        }
    }
    

    下面贴出咱的引用发送邮箱类代码

    public function channelMail()
        {
            $mail = new Lib_Smtp();
    
            $mail->setServer("smtp.qq.com", "123456@qq.com", "mima",465,true); //参数1(qq邮箱使用smtp.qq.com,qq企业邮箱使用smtp.exmail.qq.com),参数2(邮箱登陆账号),参数3(邮箱登陆密码,也有可能是独立密码,就是开启pop3/smtp时的授权码),参数4(默认25,腾云服务器屏蔽25端口,所以用的465),参数5(是否开启ssl,用465就得开启)//$mail->setServer("XXXXX", "joffe@XXXXX", "XXXXX", 465, true);
            $mail->setFrom("123456@qq.com"); //发送者邮箱
            $mail->setReceiver("123456789@qq.com"); //接收者邮箱
            $mail->addAttachment(""); //Attachment 附件,不用可注释
            $mail->setMail("测试一下", "<b>测试</b>"); //标题和内容
            $mail->send();//可以var_dump一下,发送成功会返回true,失败false
        }
    

    小结:
    使用QQ邮箱的话,需要开启POP3和SMTP服务。开启方式如下
    QQ邮箱 > 设置 > 账户>开启服务:POP3和SMTP服务

    需要 PHP 的 sockets 扩展支持,而登录 QQ 邮箱 SMTP 服务器则必须通过 SSL 加密,故 PHP 还得包含 openssl 的支持。

    展开全文
  • 这两天在学习框架,到发送邮箱的时候遇到了两个问题,下面贴出我的解决方法。 问题一:Failed to authenticate on SMTP server with username "yoovanchan@163.com" using 2 possible authenticators 大概的...

    这两天在学习框架,到发送邮箱的时候遇到了两个问题,下面贴出我的解决方法。


    问题一:Failed to authenticate on SMTP server with username "yoovanchan@163.com" using 2 possible authenticators

    大概的解决方法是:去网易邮箱开启SMTP服务(开启方法百度很多),网易邮箱可以自己设置授权码,但是授权码不能跟登录密码一致。获得授权码后,回去laravel的.env文件修改MAIL_PASSWORD值为你的授权码。

    MAIL_DRIVER=smtp
    MAIL_HOST=smtp.163.com
    MAIL_PORT=465
    MAIL_USERNAME=yoovanchan@163.com
    MAIL_PASSWORD=XXXXXXXX
    MAIL_ENCRYPTION=ssl
    贴上我的.env设置。

    问题二:Connection could not be established with host smtp.163.com

    无法跟163建立连接。

    首先,确保你的密码是你的授权码,然后主要问题是端口。

    一般在网上看到的教程端口都是25、465、587,此外使用163的话还有一个994端口可以用。端口有什么不同呢?

    首先,发送邮件采用的是SMTP协议,采用SSL加密(你的.env的加密协议一般也是ssl),25是SMTP的非SSL协议端口号,而465、994是SSL协议端口号,587端口。。我也不知道为什么587端口可以,587端口是QQ的SSL端口,但是我试过了,我用587也是可以发送的,懂的大神可否告知我。

    好了,所以,也看到啦,我们采用的是SSL协议,所以用25端口会报问题二的错误,但是用465、587、944端口都可以成功发邮件。

    展开全文
  • 发送邮件的帖子很多,但针对阿里的邮箱不是很多,不过大致相同。 通过阿里邮箱发送邮件有两种方式“邮件推送”,“企业邮箱”。 邮件推送:需要在阿里云上面根据你的域名,申请一个阿里邮箱地址。然后在代码中配置...

    发送邮件的帖子很多,但针对阿里的邮箱不是很多,不过大致相同。

    通过阿里邮箱发送邮件有两种方式“邮件推送”,“企业邮箱”。

    邮件推送:需要在阿里云上面根据你的域名,申请一个阿里邮箱地址。然后在代码中配置相关信息即可发送,这个官方有文档,地址:点击飞过去
    坑爹项:发送的记录没有地方可以查询,只能通过自己系统去记录。

    企业邮箱:通过自己的阿里云账号,密码,发送邮件。

    import java.util.Properties;
    
    import javax.activation.DataHandler;
    import javax.activation.FileDataSource;
    import javax.mail.Authenticator;
    import javax.mail.BodyPart;
    import javax.mail.Message;
    import javax.mail.Multipart;
    import javax.mail.PasswordAuthentication;
    import javax.mail.Session;
    import javax.mail.Transport;
    import javax.mail.internet.AddressException;
    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;
    
    import org.apache.commons.lang3.StringUtils;
    
    public class AliyunMail {
        private static final String ALIDM_SMTP_HOST = "smtp.qiye.aliyun.com";
    	
        private static final String ALIDM_SMTP_PORT = "25";// 或80
    
        
        /**
         * @param sendAddress 发件人地址
         * @param sendPassword 发件人密码
         * @param host 协议
         * @param port端口
         * @param subject 标题
         * @param content 内容
         * @param filePath 附件地址
         * @param CC 抄送人
         * @throws Exception 
         * @throws AddressException 
         */
        public static void sendMail(String sendAddress,String sendPassword,String host,String port,String subject,String content,String internetAddress,String filePath,String CC) throws AddressException, Exception {
                 //设置SSL连接、邮件环境
             Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
             final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
             Properties props = System.getProperties();
             props.setProperty("mail.smtp.host", host);
             props.setProperty("mail.smtp.socketFactory.class", SSL_FACTORY);
             props.setProperty("mail.smtp.socketFactory.fallback", "false");
             props.setProperty("mail.smtp.port", port);//设置端口
             props.setProperty("mail.debug", "true");//启用调试
             props.setProperty("mail.smtp.socketFactory.port", "465");
             props.setProperty("mail.smtp.auth", "true");
             //建立邮件会话
             Session session = Session.getDefaultInstance(props, new Authenticator() {   //身份认证
                 protected PasswordAuthentication getPasswordAuthentication() {
                     return new PasswordAuthentication(sendAddress, sendPassword);//发件人账号、密码
                 }
             });
             //建立邮件对象
             MimeMessage message = new MimeMessage(session);
             //设置邮件的发件人、收件人、主题
             //附带发件人名字
             //  message.setFrom(new InternetAddress("from_mail@qq.com", "optional-personal"));
             message.setFrom(new InternetAddress(sendAddress));//发件人账号
             message.setRecipients(Message.RecipientType.TO, internetAddress);//收件人账号
             
             //标题
             message.setSubject(subject);//邮件标题
             
             //内容
             Multipart multipart = new MimeMultipart();
             BodyPart contentPart = new MimeBodyPart();
             contentPart.setContent(content, "text/html;charset=utf-8");//邮件内容
             multipart.addBodyPart(contentPart);
             
             //附件部分
             if (StringUtils.isNotBlank(filePath)) {
            	 BodyPart attachPart = new MimeBodyPart();
            	 FileDataSource fileDataSource = new FileDataSource(filePath);//附件地址 D:/题库上传模板v1.xlsx
            	 attachPart.setDataHandler(new DataHandler(fileDataSource));
            	 attachPart.setFileName(MimeUtility.encodeText(fileDataSource.getName()));
            	 multipart.addBodyPart(attachPart);
             }
             
             message.setContent(multipart);
             
             //抄送地址
             if (StringUtils.isNotBlank(CC)) {
            	 InternetAddress[] internetAddressCC = new InternetAddress().parse(CC);
            	 message.setRecipients(Message.RecipientType.CC, internetAddressCC);
             }
             
             //发送邮件
             Transport.send(message);
        }
        public static void main(String[] args) {
        	try {
    			sendMail("你的邮箱账号", "你的邮箱密码", ALIDM_SMTP_HOST, ALIDM_SMTP_PORT, "subject test",
    					"<H1>AAAA</H1>", "接收人邮箱账号", null, null);
    		} catch (Exception e) {
    			System.out.println("出现异常");
    		}
    	}
     }
    

    就这么简单

    注意, 打开这个选项,发送的邮件会保存到发件箱中。

    在这里插入图片描述
    在这里插入图片描述

    需要框架的可以找我,各种私活利器。

    展开全文
  • 实现163邮箱发送邮件功能

    千次阅读 2019-01-23 20:25:45
    先有一个163邮箱账号: 做一些邮件发送的设置 勾选相关服务设置,并且设置客户端授权密码,这个密码是需要在代码中输入的,相当于是你发件箱的客户端密码。 代码准备: 引入相关依赖包 &lt;!-- 支持发送...
  • 配置exchange2010邮箱邮件大小限制

    万次阅读 2015-02-08 17:47:11
    配置邮箱邮件大小限制 A、邮箱大小设置 emc---组织配置---双击mailboxdatabase---限制 邮箱大小默认限制为2.4g,当大小超过1.99g的时候会发出警告,超过2.09g时限制发送,超过2.4g时禁止接受   B、传输单个...
  • // 建立邮件消息,发送简单邮件和html邮件的区别 MimeMessage mailMessage = senderImpl.createMimeMessage(); MimeMessageHelper messageHelper = new MimeMessageHelper(mailMessage); // 设置收件人,寄件人 ...
  • linux自动登录邮箱邮件

    千次阅读 2012-05-17 23:22:24
    linux自动登录邮箱邮件 2011-01-28 20:49:04 标签:linux mutt+msmtp linux邮件客户端配置 休闲 职场  在写shell脚本时经常用到mail命令来发送邮件,但直接发送出去的邮件往往因为不合法总是被...
  • php表单提交并发送邮件给某个邮箱(示例源码)
  • 配置邮箱邮件大小限制 !

    万次阅读 2011-03-06 11:21:00
     配置邮箱邮件大小限制 A、邮箱大小设置 emc---组织配置---双击mailbox database---限制 邮箱大小默认限制为2.4g,当大小超过1.99g的时候会发出警告,超过2.09g时限制发送,超过2.4g时禁止接受...
  • 利用python smtplib 登录QQ邮箱发送邮件

    千次阅读 2016-08-12 20:50:53
    Python 发送邮件(QQ邮箱)每当学期末考试结束后,查询成绩就成了每天和打开微信一样平常的事情,但是学校的教务系统的成绩更新有时间限制,我又不想整天去刷新成绩,所以想到用 python来爬取成绩信息 ,如果有...
  • C#获取邮件客户端保存的邮箱密码

    千次阅读 2015-06-04 09:06:21
    有时候邮件客户端记录了邮箱密码,但自己却忘记了,此时可以使用C#建立一个临时的“邮件服务器”,截取密码: IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 110); TcpListener tcp...
  • 使用MDaemon建立邮件服务器

    千次阅读 2013-05-02 15:41:11
    邮件服务基础知识   邮件服务涉及两个协议:SMTP和POP3。   SMTP是Simple Message Transfer Protocol(简单邮件传输协议)的缩写,默认端口是25。SMTP主要负责邮件的转发,以及接收其他邮件服务器发来的...
  • JavaMail用QQ邮箱发送邮件

    千次阅读 2014-05-24 13:23:55
    由于在最近的学习上要用到发送邮件的功能,所以学习了JavaMail,但是在使用QQ邮箱的时候发现了一个问题,使用服务器smtp.qq.com端口号为的时候会发生A secure connection is requiered(such as ssl)的异常,说这个不...
  • 【验证邮件】怎么实现邮箱验证注册?_验证邮件 2014-10-23:验证邮件,兴趣爱好 当点击提交注册时,将发送信息到邮箱,当你得到邮箱信息并确认后才能实现注册成功? 思路: 1.数据库加两个字,state字段...
  • QT5 使用163邮箱发送邮件

    千次阅读 2017-12-02 12:38:57
    最近在用QT写一点东西,想发送个邮件。查了一些资料,发现没有官方的库,好多前辈都是推荐使用sendemailapi,但是这个网站现在已经不提供下载了,在网上也没有找到可以免费下载的这个库的地方。 借鉴的几篇文章如下...
  • 模拟21cn邮箱登陆,获取邮件

    万次阅读 2016-05-03 13:48:47
    模拟21cn邮箱登陆 用抓包工具firebug(本人使用的也可以时别的),找到登陆页面分析出form表单,21cn登陆的页面url是: ...
  • Spring Boot 使用 QQ邮箱邮件

    千次阅读 2018-10-26 21:28:11
    一、登录QQ邮箱,点击【设置】后再点击【账户】,再往下翻,找到【POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务】这一栏 开启如图所示中的三项(非强制,这三项是根据需要开通的),我这里要求开启第一个 注意...
  • java程序向指定邮箱邮件

    千次阅读 2015-04-12 00:01:55
     用户连上邮件服务器后,要想给它发送一封电子邮件,需要遵循一定的通迅规则,SMTP协议就是用于定义这种通讯规则的。 因而,通常我们也把处理用户smtp请求(邮件发送请求)的邮件服务器称之为SMTP服务器。服务器端...
  • 由于图书馆业务需求,所以笔者花了一礼拜的时间把这个自动发送邮件的系统做好了,这里一步步的教你怎么使用Php中的phpmailer邮件类通过公司邮箱服务器发送邮件。  公司的邮件服务器地址SMTP= demuprx016.emea.nsn-...
  • 一、SMTP介绍 简单邮件传输协议 (Simple Mail Transfer ...SMTP是应用于将客户机上的邮件传送到服务器上,然后服务器通过邮件的头信息将该邮件传送出去。 二、邮件邮件是一种消息格式,邮信封、首部和正文组成。
  • 问题: 需要在Exchange服务器上导出一个用户的邮箱数据,然后再把这个人的邮箱数据清理了,但是不影响账户。...Exchange Server 2013 备份用户邮箱数据: 以管理员身份打开Exchange Management Shell ,在
  • javamail 读取163邮箱的垃圾邮件

    千次阅读 2013-07-10 22:12:14
    //imaps 协议建立的连接可以读取除INBOX以外的文件夹Session session = Session.getDefaultInstance(props, null);Store store = session.getStore("imaps");store.connect("imap.163.com", "你的用户名", "你的...
  • 主流邮箱的反垃圾邮件技术

    千次阅读 2013-10-25 15:14:01
    主流邮箱的反垃圾邮件技术2010-04-21 16:46浅析主流邮箱的反垃圾邮件技术引言随着国际互联网Internet的发展和普及,互连网的规模呈现几何级数爆炸式增长,电子邮件(e-mail)以其方便、快捷、低成本的独特魅力成为...
  • 针对QQ邮箱邮件限制的解决方案

    千次阅读 2019-11-14 00:53:14
    由于QQ邮箱对于SMTP服务发送邮件做了限制,每分钟发送40封之后会被限制不能再发送,对于这样的限制又需要发送大量邮件的时候的解决方案如下
  • 公司内部邮箱服务器发送邮件 java版

    万次阅读 2016-11-26 15:59:00
    1.用公司自己内部的邮件服务器发送邮件package test.util;import org.apache.log4j.Logger;import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.*; import javax.mail...
  • 苹果电脑MAC系统邮件收发app很多,个人比较偏向于用自带的MAIL.app,原因是: 1、已经习惯界面风格, 2、功能刚好能满足我的希求,大部分时间是用来接收邮件,偶尔用来发送邮件, 3、原生应用大概和mac系统配合的...
  • 想必使用过非腾讯邮箱的第三方邮箱都有过类似经历,配置了才能登上。操作步骤1、登录电脑版qq邮箱配置1、服务介绍2、服务开启3、授权码生成(一般要用手机发送短信验证,再生成)2、手机端填写信息3、完事! 操作...
  • c++使用stmp协议发送邮件(163的邮箱,TTL非SSL)

    万次阅读 热门讨论 2014-07-04 09:43:29
    c++使用stmp协议发送邮件(163的邮箱,TTL非SSL)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 42,094
精华内容 16,837
关键字:

怎么建立邮件邮箱