当前位置:  技术问答>linux和unix

想要在linux下面写一个电子邮件sendmail下的发送程序,不知道怎么做,从何处入手.

    来源: 互联网  发布时间:2015-08-09

    本文导语:        大侠门给些建议.如果有这方面的程序,一定高分相赠. | 直接贴出来就可以了,只是SmtpClient部分,连MX服务器用,无验证,看一下怎么回事就可以了,很简单的 /**  * File: SmtpClient.h  * Desc: smtp...


 
   
大侠门给些建议.如果有这方面的程序,一定高分相赠.

|
直接贴出来就可以了,只是SmtpClient部分,连MX服务器用,无验证,看一下怎么回事就可以了,很简单的
/**
 * File: SmtpClient.h
 * Desc: smtp client to send mail out..
 * AUTH: flying & winux
 * Date: Apr.12.2004
 */
#if !defined _SMTP_CLIENT_H
#define _SMTP_CLIENT_H
#include "ace/INET_Addr.h"
#include "ace/SOCK_Stream.h"
#include "ace/SOCK_Connector.h"
#include 
#include 
#include "config.h"


#define TIMEOUT 90

enum Status
{
        STAT_HELO,
        STAT_AUTH_START,
        STAT_AUTH_USER,
        STAT_AUTH_PASS,
        STAT_MLFM,
        STAT_RCPT,
        STAT_DATA,
        STAT_TRANS,
        STAT_FINISH,
        STAT_QUIT,
        STAT_COUNT
};

class SmtpClient
{
public:
SmtpClient(int nType = 0);
virtual ~SmtpClient();
public:
int SendMail(int nSocket, const char* szMailFrom, 
const char* szMailTo, const char* szMailContent = NULL);
int SendMail( const char* szMailFrom, const char* szMailTo,
const char* szMailContent = NULL, int nMailSize = MAX_FILE_SIZE );
int Connect( const char* szRemoteIP, int nRemotePort );
int Disconnect();
int Helo();
int Quit();
int GetStatus();
int GetRemoteRet( char* szRet);
private:
char* m_szMailContent;
char* m_szMailPointer;
char* m_HeaderToField;
char* m_pMailTo; 
char m_szRemoteRetCode[5];
int m_nMailContentSize;
int m_nISPType;
int m_nStatus;
int m_nSocket;
int m_nConnect;
int m_nHeaderToSize;

private:
ACE_SOCK_Connector m_connector;
ACE_SOCK_Stream m_peer;
ACE_Time_Value m_timeout;
char m_buffer[ 1024 ];
private:
int DoSmtpSession(int nSocket, const char* szMailFrom, 
const char* szMailTo);
int DoSmtpInit(int nSocket);
int DoSmtpStep(int nSocket, char* szBuffer, int nSize, int nStatus);
int CheckReply(const char* szReply);
};

#endif

|
一般来说就是socket通讯的问题:
要确认邮件服务器是否需要密码验证
1、首先连接邮件服务器的25端口
2、发送EHLO到该连接,并检查返回。
3、根据服务器类型选择是否发送AUTH LOGIN。
4、发送MAIL FROM 与发送方地址并检查返回。
5、发送RCPT TO与接收方地址并检查返回。
6、发送DATA与正文。
具体命令及返回信息可看有关smtp协议的资料。
如果手头有smtp服务器可telnet xxx.xxx.xx.xxx 25到该服务器上试验。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 你想要啊?想要你就说嘛!(100)
  • 如何让man查看到自己想要的函数说明
  • 如何在jbuider 6中将swing 控件放在自己想要放的位置 在线等待
  • yangtian 请进你的材料我很想要,谢谢。
  • 网络技术 iis7站长之家
  • 想要装个unix或linux边用边学,请问装哪个或什么版本较好?
  • 本人想要下载linux4.1桌面版
  • linux 下怎么才能找到想要的文件?
  • 想要下面的书,给高分
  • 想要深入学习LINUX该学什么?
  • 想要一个用jsp做的新闻发布系统
  • 有人想要<Building Java Enterprise Applications Volume I: Architecture>一书吗?
  • 想要一份Jbuilder7注册文件key.txt,一百分,多谢
  • 我想要jcreator的注册码。。。。。。。。。
  • 我想要redhat9。0里面的图标,不知道大侠们有没有办法?
  • 怎样把工作区1,2,3.4的名字改为自己想要的名字
  • 如何使用户创建的文件自动具有想要指定的权限,如755
  • 在下想要学习LINUX下的网络程序设计,请帮忙推荐社区和教材,谢谢!
  • 4块156G硬盘,该如何分区?如果某个分区想要200G怎么实现?
  • 我想要RedHat 企业版4的DVD版ISO ?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3