comment envoyer un email avec c++
je suis en train d'envoyer un e-mail à l'aide de c++ de visual studio 2013. à partir d'une recherche en ligne, j'ai trouvé quelques exemples de code pour le faire, mais je suis toujours pas en mesure d'envoyer un courriel. dans certains code que j'gt une erreur de cant inclure le fichier aucun fichier ou répertoire sur
#include sys/socket.h
j'ai aussi essayé de boost mais juste coincé. quelqu'un peut-il m'aider?
dernier code que j'ai essayé:
#include<iostream>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
using namespace std;
#define HELO "HELO 192.168.1.1\r\n"
#define DATA "DATA\r\n"
#define QUIT "QUIT\r\n"
//#define h_addr h_addr_list[0]
//FILE *fin;
int sock;
struct sockaddr_in server;
struct hostent *hp, *gethostbyname();
char buf[BUFSIZ+1];
int len;
char *host_id="192.168.1.10";
char *from_id="[email protected]";
char *to_id="[email protected]";
char *sub="testmail\r\n";
char wkstr[100]="hello how r u\r\n";
/*=====Send a string to the socket=====*/
void send_socket(char *s)
{
write(sock,s,strlen(s));
write(1,s,strlen(s));
//printf("Client:%s\n",s);
}
//=====Read a string from the socket=====*/
void read_socket()
{
len = read(sock,buf,BUFSIZ);
write(1,buf,len);
//printf("Server:%s\n",buf);
}
/*=====MAIN=====*/
int main(int argc, char* argv[])
{
/*=====Create Socket=====*/
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock==-1)
{
perror("opening stream socket");
exit(1);
}
else
cout << "socket created\n";
/*=====Verify host=====*/
server.sin_family = AF_INET;
hp = gethostbyname(host_id);
if (hp==(struct hostent *) 0)
{
fprintf(stderr, "%s: unknown host\n", host_id);
exit(2);
}
/*=====Connect to port 25 on remote host=====*/
memcpy((char *) &server.sin_addr, (char *) hp->h_addr, hp->h_length);
server.sin_port=htons(25); /* SMTP PORT */
if (connect(sock, (struct sockaddr *) &server, sizeof server)==-1)
{
perror("connecting stream socket");
exit(1);
}
else
cout << "Connected\n";
/*=====Write some data then read some =====*/
read_socket(); /* SMTP Server logon string */
send_socket(HELO); /* introduce ourselves */
read_socket(); /*Read reply */
send_socket("MAIL FROM: ");
send_socket(from_id);
send_socket("\r\n");
read_socket(); /* Sender OK */
send_socket("VRFY ");
send_socket(from_id);
send_socket("\r\n");
read_socket(); //Sender OK */
send_socket("RCPT TO: "); /*Mail to*/
send_socket(to_id);
send_socket("\r\n");
read_socket(); //Recipient OK*/
send_socket(DATA);//body to follow*/
send_socket("Subject: ");
send_socket(sub);
read_socket(); //Recipient OK*/
send_socket(wkstr);
send_socket(".\r\n");
read_socket();
send_socket(QUIT); /* quit */
read_socket(); //log off */
//=====Close socket and finish=====*/
close(sock);
exit(0);
}
- Êtes-vous en mesure d'envoyer des messages en utilisant l'invite de commande ? Avez-vous vérifier le courrier du journal pour n'importe quel message d'erreur ?
Vous devez vous connecter pour publier un commentaire.
Utilisation d'un réseau de la bibliothèque comme POCO
http://pocoproject.org/docs/Poco.Net.SMTPClientSession.html
La plupart des fichiers d'en-tête sont POSIX spécifique, et n'existe pas sur Windows.
Au lieu de
d'inclure seulement
Aussi, sur Windows, vous n'utilisez pas
read
ouwrite
de lecture/écriture pour les sockets, vous utilisezrecv
etsend
.Vous voudrez peut-être lire sur la prise en main de Winsock.
Le code disponible dans ce lien travaillé parfait pour moi, sans aucun besoin d'utiliser des bibliothèques externes ou de travail acharné (il suffit de télécharger et exécuter). Vous pouvez également suivre ce tutoriel YouTube si vous rencontrez un quelconque problème.