電子郵箱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;

}

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/199336.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 10:21
下一篇 2024-12-05 10:21

相關推薦

  • AES加密解密算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演着非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • OpenJudge答案1.6的C語言實現

    本文將從多個方面詳細闡述OpenJudge答案1.6在C語言中的實現方法,幫助初學者更好地學習和理解。 一、需求概述 OpenJudge答案1.6的要求是,輸入兩個整數a和b,輸出…

    編程 2025-04-29
  • Python按位運算符和C語言

    本文將從多個方面詳細闡述Python按位運算符和C語言的相關內容,並給出相應的代碼示例。 一、概述 Python是一種動態的、面向對象的編程語言,其按位運算符是用於按位操作的運算符…

    編程 2025-04-29
  • Git config命令用法介紹:用正確的郵箱保障開發工作

    本文將詳細介紹如何使用git config命令配置Git的全局和本地用戶信息,特別是如何正確使用用戶郵箱,保障Git操作的正常進行。 一、git config命令介紹 Git中的每…

    編程 2025-04-29
  • Python語言由荷蘭人為中心的全能編程開發工程師

    Python語言是一種高級語言,很多編程開發工程師都喜歡使用Python語言進行開發。Python語言的創始人是荷蘭人Guido van Rossum,他在1989年聖誕節期間開始…

    編程 2025-04-28
  • Python語言設計基礎第2版PDF

    Python語言設計基礎第2版PDF是一本介紹Python編程語言的經典教材。本篇文章將從多個方面對該教材進行詳細的闡述和介紹。 一、基礎知識 本教材中介紹了Python編程語言的…

    編程 2025-04-28
  • Akka 設置郵箱大小的方法和注意事項

    為了保障系統的穩定性和可靠性,Akka 允許用戶設置郵箱大小。本文將介紹如何在 Akka 中設置郵箱大小,並且提供一些注意事項,以幫助讀者解決可能遇到的問題。 一、設置郵箱大小 A…

    編程 2025-04-28
  • Python語言實現人名最多數統計

    本文將從幾個方面詳細介紹Python語言實現人名最多數統計的方法和應用。 一、Python實現人名最多數統計的基礎 1、首先,我們需要了解Python語言的一些基礎知識,如列表、字…

    編程 2025-04-28

發表回復

登錄後才能評論