C++ da "mail" göndermeyi nasıl yapabilirim?

Başlatan ezgieren, 06 Eylül 2016 - 09:42:14

« önceki - sonraki »

0 Üyeler ve 1 Ziyaretçi konuyu incelemekte.

ezgieren

Arkadaşlar merhaba, stajdayım ve verilen projem için kodlamamı yaptım ama C++ da mail göndermeye dair hiç bi şey bilmiyorum. kodlarım şu şekilde:
#include<iostream>
#include<time.h>
#include<stdlib.h>
#include<locale.h>
void sifreolustur(char sifre[], int uzunluk, bool sart);
using namespace std;
int main()
{
programbasi:
int x,a,b,c;
char sifre[25], kullaniciadi[25],cevap;
srand(time(0));
setlocale(LC_ALL,"Turkish");//Türkçe karakterleri göstermek için
do // do while döngüsü başlangıcı
{
cout<<"PROGRAMLAR"<<endl;
cout<<"1.As400"<<endl;
cout<<"2.Integra"<<endl;
cout<<"3.Netsis"<<endl;
cout<<"Kullanmak istediginiz programi seciniz:(cikmak icin 0)"<<endl;
cin>>x;

switch(x)
{
    case 1:
    cout<<"AS400 icin kullanici adinizi giriniz:";
    cin>>kullaniciadi;
    sifreolustur(sifre,6,0);//0: türkçe karakter de olabilir
    cout<<"AS400 icin sifreniz: "<<sifre<<endl;
    break;
     
    case 2:
    cout<<"INTEGRA icin kullanici adinizi giriniz:";
    cin>>kullaniciadi;
    sifreolustur(sifre,10,1);//1: TR karakter olmayan özel karakter olan
    cout<<"INTEGRA icin sifreniz: "<<sifre<<endl;
    break;
     
    case 3:
    cout<<"NETSIS icin kullanici adinizi giriniz:";
    cin>>kullaniciadi;
    sifreolustur(sifre,8,1);//1: TR karakter olmaya özel karakter olan
    cout<<"Netsis icin sifreniz: "<<sifre<<endl;
    break;
     
    default:
    cout<<"Yanlis aralikta bir deger girdiniz."<<endl;
    break;
     
}//switch sonu
if(x>0&&x<4)
{
cout<<"Sifrenizi mail olarak gondermek ister misiniz?[e/h]\n";
cin>>cevap;
if(cevap=='e'|| cevap=='E')
{
printf("mail adresinizi giriniz:\n");
//burada mail adresinin alınıp mail gönderilmesi
}

}

}while(x>0);//do while döngüsü sonu

return 0;
}
void sifreolustur(char sifre[], int uzunluk, bool sart)//sart=1 özel karakter olan TR karakter olmayan, sart=0, tüm karakterler olabilir.
{
    char sifredizisi[]="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ&|~.:,<>-+()%'/#?!$ÇçĞğİiÖöŞşÜü";
    //10 rakam, 26 küçük harf, 26 büyük harf, 19 özel karakter(başka özel karakterlerde olabilir), 12 türkçe karakter toplam 93 karakter
    int mod,i=0,rastgeleindis;
    bool ozelkarakter;
    if(sart==1)//türkçe karakter olmayacak, özel karakter olacak
    {
        ozelkarakter=0;
    while(i<uzunluk)
    {
        rastgeleindis=rand()%81;
        if(rastgeleindis>61)//*61-82 arası
        ozelkarakter=1;
        sifre[i]=sifredizisi[rastgeleindis];
        i++;
        if(i==uzunluk&&ozelkarakter==0)//şifrenin sonuna gelindiği halde özel karakter yoksa
        i=0;//başa dönüyor
    }
    sifre[uzunluk]='\0'; // char dizisini sonlandırıcı karakter     
    }
    else if(sart==0)//tüm karakterlerden olabilir.
    {
        while(i<uzunluk)
    {
        rastgeleindis=rand()%93;
        sifre[i]=sifredizisi[rastgeleindis];
        i++;
    }
    sifre[uzunluk]='\0'; // char dizisini sonlandırıcı karakter     
    }
     
     
}


burada mail adresinin girilmesini istediğim yerde, mail adresini kullanıcıdan alıp nasıl mail gönderirim. Şimdiden teşekkür ederim.

Erdem

Curl kütüphanesini kullanarak yapabilirsiniz. Ben de komut satırından denedim.

İlkönce Gmail için

https://www.google.com/settings/security/lesssecureapp

adresinden "Daha az güvenli uygulamalar için erişimi aç" seçeneğini seçmek gerekiyor.

curl --url "smtps://smtp.gmail.com:465" --ssl-reqd --mail-from "GÖNDEREN@gmail.com" --mail-rcpt "ALICI@gmail.com" --upload-file mail.txt --user "GÖNDERİCİ@gmail.com:ŞİFRE" --insecure

mail.txt dosyasının içeriği de şu şekildeydi.

Alıntı YapFrom: "GÖNDERİCİ" <GÖNDERİCİ@gmail.com>
To: "ALICI" <ALICI@gmail.com>
Subject: Bu bir denemedir

Merhaba Erdem,
Bu mesajı sana curl kullanarak gmail hesabından gönderiyorum.
Görüşürüz!
Eğer Arch Linux tabanlı bir dağıtıma geçmek isterseniz Arcolinux D sürümünü buradan indirebilirsiniz.

Elektronik