package server;

import java.io.*;
import java.net.*;
import java.sql.Time;
import java.util.Scanner;
import java.util.Timer; public class client { /*通过163smtp服务器向其他邮箱发送数据
* 返回码
* 0:未知原因出错
* 1:发送成功
* 2:被判定为垃圾邮件
*/
public static int send(Mail mail){
int state=0;
Socket socket=null;
String userName="xxxxxxxxx";//经过base64编码的163邮箱用户名
String password="xxxxxxxxxxxxxx";//经过base64编码的163邮箱密码
BufferedReader reader=null;
PrintWriter writer=null;
try {
// 连接到服务器
socket = new Socket("SMTP.163.com", 25);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
System.out.println(reader.readLine());
writer.println("HELO 163");
System.out.println(reader.readLine());
writer.println("auth login");
System.out.println(reader.readLine());
writer.println(userName);
System.out.println(reader.readLine());
writer.println(password);
System.out.println(reader.readLine());
writer.println("mail from:<mailsys163@163.com>");
System.out.println(reader.readLine());
writer.println("rcpt to:<" +mail.getReceiver()+">");
System.out.println(reader.readLine());
//开始发送邮件
writer.println("data");
System.out.println(reader.readLine());
writer.println("subject:"+mail.getSubject());
writer.println("from:"+mail.getSender());
writer.println("to:"+mail.getReceiver());
writer.println("Content-Type: text/plain;charset=\"gb2312\"");
writer.println("");
writer.println(mail.getContent());
writer.println(".");
writer.println("");
String sum=reader.readLine();
System.out.println(sum);
if(sum.indexOf("250")==0){
System.out.println("发送成功");
state=1;
}else if(sum.indexOf("554")==0){
System.out.println("被判定为垃圾邮件");
state=2;
}
writer.println("rset");
System.out.println(reader.readLine());
writer.println("quit");
} catch (IOException e) {
e.printStackTrace();
}finally {
try {
socket.close();
reader.close();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return state;
} public static void main(String[] args){
Mail mail=new Mail("xxxxxxx@163.com","xxxxx@qq.com","你好","吃饭了没");
System.out.println(send(mail)); }
}

注意如果是163向163发送邮件,邮件的发送者(mail.sender,不是真实发送者这个必须和认证的用户名相同)可以设置为任意的,这样接收者收到邮件时会看到该邮件由认证的用户代发

但是如果是163向其他邮箱发送邮件,这两个from必须相同,否则大部分情况下都会被163当作是垃圾邮件返回554错误,无发发送

通过163smtp服务器向各大邮箱发送邮件(SOCKET编程)的更多相关文章

  1. 基于JavaMail向邮箱发送邮件

    参考:http://blog.csdn.net/ghsau/article/details/17839983 http://blog.csdn.net/never_cxb/article/detail ...

  2. Java实现网易企业邮箱发送邮件

    最近项目需要用网易企业邮箱发送邮件,特意来将实现过程记录一下: maven导入jar包 <!-- javax.mai 核心包 --> <dependency> <grou ...

  3. 杂项之使用qq邮箱发送邮件

    杂项之使用qq邮箱发送邮件 本节内容 特殊设置 测试代码 1. 特殊设置 之前QQ邮箱直接可以通过smtp协议发送邮件,不需要进行一些特殊的设置,但是最近使用QQ邮箱测试的时候发现以前使用的办法无法奏 ...

  4. DEDECMS会员注册如何配置邮箱发送邮件功能

    网站邮件功能是一个非常基础和有效的通信工具,配合dede会员注册邮件验证功能可以大量的拒绝垃圾注册用户.那么如何配置DEDECMS会员注册邮箱发送邮件功能?   1:配置dedecms网站发信EMAI ...

  5. asp.net使用qq邮箱发送邮件

    using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Ne ...

  6. ecshop QQ邮箱发送邮件服务器配置

    ecshop QQ邮箱发送邮件服务器配置 1.邮件服务:采用其他的SMTP服务 2.邮件服务器是否要求加密连接(SSL): 是 此项设置需要php支持openSSL模块 开启方法: a.php.ini ...

  7. rails使用QQ邮箱发送邮件蛋疼的经历

    以前本猫在blog中写过使用ruby发送邮件的博文,其中使用了163和qq的邮箱发送邮件都可以发送成功.但是现在使用rails的发送邮件功能,使用的是qq的邮件服务器发送,死活不可以!要不就是认证失败 ...

  8. SpringBoot使用qq邮箱发送邮件

    最近公司要做一个邮箱注册和重置密码的功能,因为之前就做过,但是不是Springboot项目,所以相对来说还是比较容易的,在这里记录一下. 一.引用Maven依赖 这里使用spring自带的邮件jar包 ...

  9. CentOS7像外部163邮箱发送邮件

    我们在运维过程中,为了随时了解服务器的工作状态,出现问题随时提醒,像个人邮箱发送邮件是必须的,但是刚刚安装好的系统是无法发送邮件的.需要们进行一些配置和程序的安装,我安装完系统后,自带mail12.5 ...

随机推荐

  1. css3 响应式布局 Media Query

    1.什么是响应式布局? 响应式布局是Ethan Marcotte在2010年5月份提出的一个概念,简单说就是一个网站能够兼容多个终端. 2.响应式布局的优缺点? 优点:面对不同分辨率设备灵活性强,快捷 ...

  2. [PHP] 从 PHP 5.3.X 迁移到 PHP 5.6.X不兼容点

    从 PHP 5.3.X 迁移到 PHP 5.4.X不兼容点: 1.不再支持 安全模式 2.移除 魔术引号,设置 magic_quotes_gpc 系列将不会生效 3.Salsa10 和 Salsa20 ...

  3. [javaEE] Servlet中Session的使用

    Session是一个域 作用范围:当前会话范围 生命周期:当程序第一次调用request.getSession()创建出客户端的session对象,30分钟没有操作认为超时,这个可以在web.xml中 ...

  4. Java相关脚本

    本人摘自:https://github.com/oldratlee/useful-scripts/blob/master/docs/java.md#beer-show-busy-java-thread ...

  5. 浅谈Android项目----JSON解析(4种解析技术详解)

    json简介 1.概念:json全称是javaScript object Notation,是一种并轻量级的数据交换格式. 2.特点: 1.本质就是具有特定格式的字符串 2.json完全独立于编程语言 ...

  6. http_proxy_module 模块(proxy_pass 指令)

    1. proxy_pass 指令介绍 该指令属于 http_proxy_module, http_proxy_module 模块可以将请求转发到另一台服务器. 在 nginx 反向代理是,会通过 lo ...

  7. Java CountDownLatch解析(下)

    写在前面的话 在上一篇CountDownLatch解析中,我们了解了CountDownLatch的简介.CountDownLatch实用场景.CountDownLatch实现原理中的await()方法 ...

  8. MVC 手机端页面 使用标签file 图片上传到后台处理

    最近刚做了一个头像上传的功能,使用的是H5 的界面,为了这个功能搞了半天的时间,找了各种插件,有很多自己都不知道怎么使用,后来只是使用了一个标签就搞定了:如果对样式没有太大的要求我感觉使用这个就足够了 ...

  9. sublime 在Mac终端下设置快捷打开方式

    vi ~/.zshrc alias subl='open -a "Sublime Text"' source ~/.zshrc 打开 ~/.zshrc,然后写入第二行,然后执行第三 ...

  10. PHP学习笔记(一) ---- PHP简介以及基本语法

    PHP 一.PHP 简介 PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言.语法吸收了C语言.Java和Perl的特点, 利于 ...