您的位置:

电子邮箱c语言,邮箱密码c语言

本文目录一览:

C语言编程,给定一个Email地址,判断其是否合法

#includestdio.h

#includestring.h

int FormatCheck(char *);

char * SplitByAt(char * ,int);

char * CharsCheck(char *);

#define N 1024

int main()

{

    char str[N],*field;

    memset(str,0x00,N);

    scanf("%s",str);

    field=SplitByAt(str,N);

    if(field==NULL)

    {

        printf("NO\n");

        return -1;

    }

    else if(FormatCheck(str)FormatCheck(field))

    {

        printf("YES\n");

        return 0;

    }

    else

    {

        printf("NO\n");

        return -1;

    }

}

/**

 *校验域名/邮箱格式

 */

 int FormatCheck(char *str)

 {

     char *p;

     for(;;)

     {

         p=CharsCheck(str);

         if(p==str)

         {

             return 0;

         }

         else if(*p=='\0')

         {

             return 1;

         }

         else if(*p!='.')

         {

             return 0;

         }

         p++;

         str=p;

     }

 }       

/**

 *校验是否可用@分割为两段,返回域名首地址,不合要求返回NULL

 *参数:str,源字符串,length,长度限制(防越界)

 *函数会用'\0'代替源字符串第一个'@',已完成邮箱,域名分割.

 */

char *SplitByAt(char *str,int length)

{

    char *p=strchr(str,'@');

    if(p!=NULL(p-str)length)

    {

        *p=0;

        p++;

        return p;

    }

    return NULL;

}

/**

 *校验str是否为连续的'a'-'z','A'-'Z','0'-'9'字符

 *返回值:第一个不合要求的字符所处位置

 *例如:str="abc",返回str+3; str="a#bc",返回str+1;

 */

char * CharsCheck(char *str)

{

    while((*str='a'*str='z')||

        (*str='A'*str='Z')||

        (*str='0'*str='9')||

         *str=='_')

    {

        str++;

    }

    return str;

}

要求没有提'_'符号的特殊规则, 所以"__.__@_"这样的email也是能校验过的.

如何用c语言来识别电子邮箱是否正确

最简单的方式是使用正则表达式。检测邮箱格式的正则表达式:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$。

1、标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。

2、C/C++ 中使用正则表达式一般分为三步:

1)编译正则表达式 regcomp()

int regcomp (regex_t *compiled, const char *pattern, int cflags)

这个函数把指定的正则表达式pattern编译成一种特定的数据格式compiled,这样可以使匹配更有效。函数regexec 会使用这个数据在目标文本串中进行模式匹配。执行成功返回0。

2)匹配正则表达式 regexec()

int regexec (regex_t *compiled, char *string, size_t nmatch, regmatch_t matchptr [], int eflags)

当编译好正则表达式后,就可以用regexec 匹配我们的目标文本串了,如果在编译正则表达式的时候没有指定cflags的参数为REG_NEWLINE,则默认情况下是忽略换行符的,也就是把整个文本串当作一个字符串处理。执行成功返回0。

3)释放正则表达式 regfree()

void regfree (regex_t *compiled)

当使用完编译好的正则表达式后,或者要重新编译其他正则表达式的时候,可以用这个函数清空compiled指向的regex_t结构体的内容。请注意,如果是重新编译的话,一定要先清空regex_t结构体。

邮件发送程序客户端(C语言源代码)

SMTP协议是用于发送电子邮件的主要通信协议,是C语言进行网络编程时经常都会使用到的基础协议之一。邮件发送客户端程序要求使用C语言socket通信来完成SMTP协议,实现邮件发送程序的客户端应用,通过该程序能够向远程的SMTP服务器发送电子邮件的请求,并发送到指定的电子邮箱之中。 第一阶段:只要求通过dos窗口实现简单文本邮件的发送,具体的要求如下: 程序启动后录入SMTP服务器地址; 录入SMTP服务器用户名和密码; 录入收件人地址和抄送人地址(允许录入多个,中间以分号分隔); 录入邮件主题; 录入邮件内容完成后发送邮件; 邮件发送成功后系统提供邮件发送成功; 第二阶段:要求能够实现发送MIME格式邮件或利用Win32编程将程序升级为桌面应用程序,进入第二阶段必须满足以下条件: 必须是在充分理解SMTP协议的基础上; 必须是在充分理解MIME格式的基础上; 利用C语言将发送的内容格式化为MIME格式; 可以首先考虑只实现MIME格式的一部分格式化需求; 升级桌面应用程序必须对Win32 API有一定的理解和掌握;

c语言中录入邮箱信息的时候定义什么类型?

那要看你记录的信息内容。

一、单纯记录邮箱地址 ,一个字符串即可。

二、记录并验证邮箱,字符串数组,把地址里的用户名和域名分开来放,用于服务器查询。(当然用一个字符串保存,查询时再拆分也可)。

三、复合结构 ,比如注册的邮箱信息,包含账户,密码,真实姓名,电话等等。需定义结构体来保存。

编写一个C语言程序,显示自己的学号,姓名,班级和电子邮箱

此类程序,没有额外要求情况下,直接打印即可。

学号:12345

姓名:赵手快

班级:一年一班

电子邮箱:youxiang@xxx.xx

那么直接输出:

int main()

{

    printf("学号:12345\n");

    printf("姓名:赵手快\n");

    printf("班级:一年一班\n");

    printf("电子邮箱:youxiang@xxx.xx\n");

}

这样就是符合需求的了。

C语言发送邮件

基本框架就是这,需要其他功能自己添加吧

C语言实现简单的SMTP发送邮件

#include windows.h

#include stdio.h

#include WinSock.h

#include iostream

using namespace std;

#pragma comment(lib, "ws2_32.lib")

struct Base64Date6

{

unsigned int d4:6;

unsigned int d3:6;

unsigned int d2:6;

unsigned int d1:6;

};

// 协议中加密部分使用的是base64方法

char ConvertToBase64 (char c6);

void EncodeBase64 (char *dbuf, char *buf128, int len);

void SendMail (char *email,char *body);

int OpenSocket (struct sockaddr *addr);

int main()

{

char EmailTo[] = "hanyinlong@126.com";

char EmailContents[] = "From: \"lucy\"hanyinlong@126.com\r\n"

"To: \"dasiy\"hanyinlong@126.com\r\n"

"Subject: Hello\r\n\r\n"

"Hello World, Hello Email!";

SendMail(EmailTo, EmailContents);

return 0;

}

char ConvertToBase64(char uc)

{

if(uc 26)

{

return 'A' + uc;

}

if(uc 52)

{

return 'a' + (uc - 26);

}

if(uc 62)

{

return '0' + (uc - 52);

}

if(uc == 62)

{

return '+';

}

return '/';

}

// base64的实现

void EncodeBase64(char *dbuf, char *buf128, int len)

{

struct Base64Date6 *ddd = NULL;

int i = 0;

char buf[256] = {0};

char *tmp = NULL;

char cc = '\0';

memset(buf, 0, 256);

strcpy_s(buf, 256, buf128);

for(i = 1; i = len/3; i++)

{

tmp = buf + (i-1)*3;

cc = tmp[2];

tmp[2] = tmp[0];

tmp[0] = cc;

ddd = (struct Base64Date6 *)tmp;

dbuf[(i-1)*4+0] = ConvertToBase64((unsigned int)ddd-d1);

dbuf[(i-1)*4+1] = ConvertToBase64((unsigned int)ddd-d2);

dbuf[(i-1)*4+2] = ConvertToBase64((unsigned int)ddd-d3);

dbuf[(i-1)*4+3] = ConvertToBase64((unsigned int)ddd-d4);

}

if(len % 3 == 1)

{

tmp = buf + (i-1)*3;

cc = tmp[2];

tmp[2] = tmp[0];

tmp[0] = cc;

ddd = (struct Base64Date6 *)tmp;

dbuf[(i-1)*4+0] = ConvertToBase64((unsigned int)ddd-d1);

dbuf[(i-1)*4+1] = ConvertToBase64((unsigned int)ddd-d2);

dbuf[(i-1)*4+2] = '=';

dbuf[(i-1)*4+3] = '=';

}

if(len%3 == 2)

{

tmp = buf+(i-1)*3;

cc = tmp[2];

tmp[2] = tmp[0];

tmp[0] = cc;

ddd = (struct Base64Date6 *)tmp;

dbuf[(i-1)*4+0] = ConvertToBase64((unsigned int)ddd-d1);

dbuf[(i-1)*4+1] = ConvertToBase64((unsigned int)ddd-d2);

dbuf[(i-1)*4+2] = ConvertToBase64((unsigned int)ddd-d3);

dbuf[(i-1)*4+3] = '=';

}

return;

}

// 发送邮件

void SendMail(char *email, char *body)

{

int sockfd = {0};

char buf[1500] = {0};

char rbuf[1500] = {0};

char login[128] = {0};

char pass[128] = {0};

WSADATA WSAData;

struct sockaddr_in their_addr = {0};

WSAStartup(MAKEWORD(2, 2), WSAData);

memset(their_addr, 0, sizeof(their_addr));

their_addr.sin_family = AF_INET;

their_addr.sin_port = htons(25);

hostent* hptr = gethostbyname("smtp.126.com");

memcpy(their_addr.sin_addr.S_un.S_addr, hptr-h_addr_list[0], hptr-h_length);

printf("IP of smpt.126.com is : %d:%d:%d:%d\n",

their_addr.sin_addr.S_un.S_un_b.s_b1,

their_addr.sin_addr.S_un.S_un_b.s_b2,

their_addr.sin_addr.S_un.S_un_b.s_b3,

their_addr.sin_addr.S_un.S_un_b.s_b4);

// 连接邮件服务器,如果连接后没有响应,则2 秒后重新连接

sockfd = OpenSocket((struct sockaddr *)their_addr);

memset(rbuf, 0, 1500);

while(recv(sockfd, rbuf, 1500, 0) == 0)

{

cout"reconnect..."endl;

Sleep(2);

sockfd = OpenSocket((struct sockaddr *)their_addr);

memset(rbuf, 0, 1500);

}

coutrbufendl;

// EHLO

memset(buf, 0, 1500);

sprintf_s(buf, 1500, "EHLO HYL-PC\r\n");

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"EHLO REceive: "rbufendl;

// AUTH LOGIN

memset(buf, 0, 1500);

sprintf_s(buf, 1500, "AUTH LOGIN\r\n");

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"Auth Login Receive: "rbufendl;

// USER

memset(buf, 0, 1500);

sprintf_s(buf, 1500, "hanyinlong@126.com");//你的邮箱账号

memset(login, 0, 128);

EncodeBase64(login, buf, strlen(buf));

sprintf_s(buf, 1500, "%s\r\n", login);

send(sockfd, buf, strlen(buf), 0);

cout"Base64 UserName: "bufendl;

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"User Login Receive: "rbufendl;

// PASSWORD

sprintf_s(buf, 1500, "XXXXXXXXXXXX");//你的邮箱密码

memset(pass, 0, 128);

EncodeBase64(pass, buf, strlen(buf));

sprintf_s(buf, 1500, "%s\r\n", pass);

send(sockfd, buf, strlen(buf), 0);

cout"Base64 Password: "bufendl;

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"Send Password Receive: "rbufendl;

// MAIL FROM

memset(buf, 0, 1500);

sprintf_s(buf, 1500, "MAIL FROM: hanyinlong@126.com\r\n");

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"set Mail From Receive: "rbufendl;

// RCPT TO 第一个收件人

sprintf_s(buf, 1500, "RCPT TO:%s\r\n", email);

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"Tell Sendto Receive: "rbufendl;

// DATA 准备开始发送邮件内容

sprintf_s(buf, 1500, "DATA\r\n");

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"Send Mail Prepare Receive: "rbufendl;

// 发送邮件内容,\r\n.\r\n内容结束标记

sprintf_s(buf, 1500, "%s\r\n.\r\n", body);

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"Send Mail Receive: "rbufendl;

// QUIT

sprintf_s(buf, 1500, "QUIT\r\n");

send(sockfd, buf, strlen(buf), 0);

memset(rbuf, 0, 1500);

recv(sockfd, rbuf, 1500, 0);

cout"Quit Receive: "rbufendl;

//清理工作

closesocket(sockfd);

WSACleanup();

return;

}

// 打开TCP Socket连接

int OpenSocket(struct sockaddr *addr)

{

int sockfd = 0;

sockfd=socket(PF_INET, SOCK_STREAM, 0);

if(sockfd 0)

{

cout"Open sockfd(TCP) error!"endl;

exit(-1);

}

if(connect(sockfd, addr, sizeof(struct sockaddr)) 0)

{

cout"Connect sockfd(TCP) error!"endl;

exit(-1);

}

return sockfd;

}