RSS

PHP ile SMTP’den mail gönderme

116 15 Ağustos 2012 ~ Musa Avcı — Orta

Bundan önceki mail formu yapımı yazımda normal mail fonksiyonu ile mail göndermeyi anlatmıştım. Şimdi o yönteme alternatif ve daha etkili olan SMTP ile mail göndermekten bahsedeceğim.

SMTP (Simple Mail Transfer Protocol) Elektronik posta gönderme protokolüdür. PHP’nin normal mail fonksiyonuyla genelde server adına ve herhangi bir doğrulama yapmadan istediğimiz bir gönderen adresi tanımlayarak göndermeye çalışıyoruz, SMTP’de ise maili gönderebilmek için gerçek bir mail hesabına ihtiyacımız var. Mail fonksiyonuna kıyasla bu şekilde gönderilen maillerin doğruluğu ve güvenilirliği daha yüksek olduğu için spam (önemsiz) klasörlerine düşme olasığı da azdır.

Ayrıca yazının resmini öylesine Gmail yapmadım. SMTP ile kendi sunucunuzdan başka mail hesaplarınız adına da mail atabiliyorsunuz, ki ben bu yöntemi özellikle bu amaç için kullanıyorum. Kendi mail sunucumu kullanmak yerine kendi domainimin mail DNS (MX) ayarlarını Gmail’e yönlendirip SMTP ile mail gönderiyorum (Bu konuyla alakalı detaylı bilgi için tıklayın). Bu sayede gönderdiğim mesajların spama düşmesi gibi bir durum söz konusu olmuyor.

PHP SMTP Sınıfı: PHPMailer

Bu olay için sıfırdan nasıl kodlanacağını değil, var olan çok özellikli açık kaynak SMTP sınıfını nasıl kullanacağımızı göstereceğim. Bu güzel sınıfa şu adresten ulaşıp şuralardan güncel sürümünü indirebilirsiniz.

Kullanımı inanın gayet basit ve mail olaylarıyla alakalı istediğiniz her şeyi yapmak mümkün (dosya göndermek, birden fazla alıcı eklemek, yanıt adresini değiştirmek vs.)

Mail Göndermek

PHPMailer sınıfı ile SMTP mail göndermek için “class.phpmailer.php” ve “class.smtp.php” dosyalarını alıp aşağıdaki kod bloğunu kullanmanız yeterli. İlgili yerlere kendi sunucunuzun host, port ve kullanıcı adı şifre bilgilerinizi girin.

include 'class.phpmailer.php';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.sitem.com';
$mail->Port = 587;
$mail->Username = '[email protected]';
$mail->Password = 'çokgizlişifre';
$mail->SetFrom($mail->Username, 'Benim Adım');
$mail->AddAddress('[email protected]', 'Alıcının Adı');
$mail->CharSet = 'UTF-8';
$mail->Subject = 'Mail Başlığı';
$mail->MsgHTML('Mailin içeriği!');
if($mail->Send()) {
	echo 'Mail gönderildi!';
} else {
	echo 'Mail gönderilirken bir hata oluştu: ' . $mail->ErrorInfo;
}

Olay bu kadar düzenli ve basit. Eğer yukarıda da bahsettiğim gibi kendi sunucunuzu kullanmak yerine varolan Gmail hesabınız ile bu olayı kullanmak istiyorsanız yukarıdaki host ve port bölümü aşağıdaki gibi değiştirin:

$mail->Host = 'smtp.gmail.com';
$mail->Port = 587;
$mail->SMTPSecure = 'tls';

Mail ile dosya göndermek

Göndereceğiniz mailin içerisine dosya eklemek için AddAttachment metodunu kullanacağız. Örneğin bir resim göndermek için:

$mail->AddAttachment('img/gonderilecek_resim.jpg');

Bu kadar basit.

Birden fazla kişiye gönderme

Birden fazla alıcı eklemek için ekstra bir şeye ihtiyaç yok. Yukarıda alıcı adresi tanımladığımız AddAddress metodunu tekrar kullanabiliriz. Ama eğer CC ya da BCC eklemek istiyorsanız onun için de AddCC ya da AddBCC metodlarını kullanmanız yeterli.

$mail->AddAddress('[email protected]', 'Başkası');
$mail->AddCC('[email protected]', 'Diğeri');
$mail->AddBCC('[email protected]', 'Öteki');

Yeri gelmişken CC ile BCC arasından da bahsetmek gerekirse; CC: “Carbon Copy” yani bir kopyasını da bu şekilde eklenmiş adreslere gönderir. BCC: “Blend Carbon Copy” CC ile aynı tek farkı buraya yazılan adresler diğer gönderilen kişilerde gözükmez.

Yanıt adresini değiştirme

Eğer gönderdiğiniz adrese değilde başka bir adrese cevap yazılmasını istiyorsanız AddReplyTo metodu ile cevap atılmasını istediğiniz mail adresini yazmanız yeterli.

$mail->AddReplyTo('[email protected]', 'Cevapçı');

Bu sınıf hakkında daha fazla bilgi ve örnek çalışma için şuraya bakabilirsiniz.

Spamsız mailler dileğiyle, bir başka PHP serüveninde görüşmek üzere hoşçakalın!

Etiketler:

Yazılanlar ilgini çektiyse, yenilerinden haberdar olmak için e-mail bültenine abone olabilirsin.

"PHP ile SMTP’den mail gönderme" yazısı için 116 yorum yapılmış.

  1. Bülent dedi ki:

    Çok güzel bir yazı, emeğinize sağlık.
    Dosya gönderme işlemi eğer dosya sunucuda yüklü ise çalışıyor sanıyorum. Peki kullanıcıya bir form üzerinden görsel ekletsek ve form sonuçları ile birlikte bu görseli de göndertsek olur mu? Veri tabanı kullanmadan mümkün olur mu?

    • Musa Avcı dedi ki:

      evet, form ile gönderilen dosyayı önce normal bir şekilde sunucunuza upload edin, sonrasında upload edilen dosyanın sunucudaki yerini alarak AddAttachment metoduna verin.

  2. Burak dedi ki:

    Hocam paylaşımınız için çok teşekkür ediyorum çok yararlı bir makale.

  3. Yahya dedi ki:

    Oncelikle yararli paylasiminiz icin tesekkurler.
    Benim hali hazirda bir html formum var ve burda kullanicinin doldurdugu bilgilerin mail adresime gelmesini istiyorum. Sundugunuz kodlari ve yontemi kendi formuma ve dizinime nasil entegre edecegim?

  4. yunus dedi ki:

    merhaba html mail yollayabiliyor muyuz bununla?

  5. yunus dedi ki:

    çok başarılı teşekkürler

  6. Serkan Çıracıoğlu dedi ki:

    Makale için teşekkür ederim. sorunsuz maili gönderiyorum.

    mail gittikten sonra aşağıdaki dönütü alıyorum. bunu nasıl kapatabilirim.

    teşekkürler

    SMTP -> FROM SERVER:220 pod51017.outlook.com Microsoft ESMTP MAIL Service ready at Thu, 27 Dec 2012 09:38:10 +0000
    SMTP -> FROM SERVER: 250-pod51017.outlook.com Hello [212.174.253.16] 250-SIZE 36700160 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-STARTTLS 250-AUTH 250-8BITMIME 250-BINARYMIME 250 CHUNKING
    SMTP -> FROM SERVER:220 2.0.0 SMTP server ready
    SMTP -> FROM SERVER: 250-pod51017.outlook.com Hello [212.174.253.16] 250-SIZE 36700160 250-PIPELINING 250-DSN 250-ENHANCEDSTATUSCODES 250-AUTH LOGIN 250-8BITMIME 250-BINARYMIME 250 CHUNKING
    SMTP -> FROM SERVER:250 2.1.0 Sender OK
    SMTP -> FROM SERVER:250 2.1.5 Recipient OK
    SMTP -> FROM SERVER:250 2.1.5 Recipient OK
    SMTP -> FROM SERVER:354 Start mail input; end with .
    SMTP -> FROM SERVER:250 2.6.0 [InternalId=29350592] Queued mail for delivery
    SMTP -> FROM SERVER:221 2.0.0 Service closing transmission channel

  7. cem dedi ki:

    merhaba,
    $mail->MsgHTML(‘Mailin içeriği!’);
    buradaki mailin içeriğine sitemdeki formu nasıl ekleyebilirim.
    sitemde daha önce aşağıdaki kodlar mevcuttu.

    İsim       :
    Telefon :
    E-Mail   :
    Adres   :
    Mesaj   :

    yardımlarınız için şimdiden teşekkürler.

  8. mehmet dedi ki:

    çok yararlı hocam arşivledim bilgileri.

  9. sadiye dedi ki:

    anlatımınız çok başarılı bilmeyenler bile sırası ile takip ederlerse öğrenebilirler.

  10. Mert Alpaslan dedi ki:

    Selamlar,

    Yazı içi teşekkür ederim. Aynı yazdığınız gibi uyguladığım halde dönüşte ne bir hata alıyorum ne de bir mail alabiliyorum. Sorun sizce ne olabilir?

  11. Ahmet SAĞIRLI dedi ki:

    smtp sunucuya bağlanıyorum fakat mail bilgilerim doğru olduğu halde kimlik doğrulama hatası alıyorum. (Error: Could not authenticate) bunun sebebi ne olabilir. çok uğraştım fakat üstesinden gelemedim. lütfen yardım hocam…

  12. Ahmet SAĞIRLI dedi ki:

    tamam sorunu çözdüm ve saat gibi çalışıyor saniyesinde gelen kutusuna düşüyor. İnanıulmaz mutlu oldum. çok teşekkürler paylaşım için çok sağolun hocam…

  13. sercan dedi ki:

    bunu hosta atıp nasıl kullanıcaz…wordpresss e eklenti olarak mı atıcaz

  14. kenan dedi ki:

    öncelikle paylaşım çok güzel teşekkürler ederim dediğinizi yaptım bu konuda daha yeniyim bende bu sorun çıktı bu belirttiğiniz klasörü tek mi yoksa onunla birlikte gelen tüm dosyaları mı sunucuya atacağım ben öyle yaptım bu class ta port numarasını 587 port numarasını yazdım 25 yerine gerisinde neler yapmam gerekiyor ben böyle bir hata çıktı ne yapmalıyım lütfen yardımcı olun:
    Warning: stream_socket_enable_crypto() [streams.crypto]: this stream does not support SSL/crypto in D:HostingSpacesl klasörlerim/class.smtp.php on line 248
    Mail gönderilirken bir hata oluÅŸtu: The following From address failed: [email protected] : MAIL not accepted from server,,

    SMTP server error:

    SMTP server error:

    • Musa Avcı dedi ki:

      paylaştığınız hatada sorunun SSL ile alakalı olduğunu görüyoruz. Lokalde denerken böyle sıkıntılar olabiliyor, sunucunuza atıp tekrar denemenizi ya da lokal sunucunuza da SSL desteği kurmanızı öneriyorum. Kolay gelsin.

      • Aziz dedi ki:

        Anlatım için teşekkürler. Localimde uygulamayı çalıştıramadım. Ssl ile ilgili yardımcı olur musun? Çünkü sunucuda deneme şansım yok. Mail göndermeyi localimde test etmek istiyorum.

  15. borahan dedi ki:

    HTML olarak nasıl yollayabiliriz arka planında resim olan table olan bir sayfam var bunu nasıl yollayabiliriz resimler çıkmıyor

  16. Pınar Taş dedi ki:

    Merhaba ben bu sekılde ayarlarımı yaptım mail gidiyor fakat
    $mail->SetFrom($_POST[‘gonderen_mail’], ‘Benim Adım’); kısmında
    yaptıgım halde mail smtp username yazdıgım mail adresi üzerinden gidiyor halbukı $_POST[‘gonderen_mail’] ne ise onun üzerinden nasıl gitmesini sağlayabilirim

  17. veli dedi ki:

    merhaba.yukarıdaki kodları nereye ekliyoruz nasıl ekliyoruz.bilgim olmadığı için soruyorum.şimdiden teşekkür ederim.iyi çalışmalar….

  18. musa dedi ki:

    teşekkürler

  19. şevki dedi ki:

    Language string failed to load: recipients_failed hatasını alıyorum nasıl düzeltirim acil yardım

  20. ozkan dedi ki:

    $konu gibi geşkenleri koyduğumuz zaman konu değişken olarak değilde yazı olarak gönderiyor değişkenleri nasıl koyabiliriz

  21. prekast dedi ki:

    Çok yararlı paylaşım yapmışsınız hocam ellerinize sağlık.

  22. Halil S. dedi ki:

    Teşekkür ederiz, güzel, sade ve hazır…

  23. Hasan Sarıkaya dedi ki:

    merhaba hocam php de db den cektigim verileri << HEREDOC ile excelin html koduna aktartıyorum cıktı verdirdikten sonra excel'e dönüştürüp indirebiliyorum burada problemim yok ama bu exceli oluşturup mail de ek olarak görünmesini istiyorum bunu nasl yapabilirim?

  24. Prefabrik ev dedi ki:

    Paylaşımınız için çok teşekkür ediyorum, çok yararlı bir makale.

  25. Web Tasarımcı dedi ki:

    ellerinize sağlık hocam, güzel anlatmışsınız.

  26. ibrahim dedi ki:

    Emeklerinize sağlık. Benim gibi acemiler için kodu nereye yapıştıracağımızı da belirtir misiniz?

  27. Fatih dedi ki:

    Öncelikle bilgileriniz için çok teşekkür ederim. Hem localde hem sunucuda şöyle bit hata alıyorum yardım ederseniz sevinirim.
    The following From address failed: [email protected] : Called Mail() without being connected

  28. Onur dedi ki:

    MerhabaHocam gerçekten çok yararlı bir yaplaşım. Localhost üzerinden gmail kullanarak smtp mail gönderemiyorum bu konuda yardımcı olabilirmisiniz ?

  29. Eyup dedi ki:

    Türkçe karakter sorunu oluşuyor. Nasıl düzeltebiliriz.
    Benim Adım şeklinde yazıyor.
    $mail->CharSet = den başka bir fonksiyon var mı

  30. bicümle dedi ki:

    peki bunu aktivasyon koduna nasıl entegre edebiliriz ? üyelik sisteminde aktivasyon maili gidiyor.. bilet yapıp onu nasıl üyeye gönderebiliriz ?

  31. soru dedi ki:

    Merhaba hocam benim bir sorum olucak ben aynen kodları yazdım fakat e-mail adresini form kısmında hata olarak görüyor ve ad soyad,e-mail gibi bilgileri maillimde göstermiyor sadece mesaj var.(mail e-mail adresini girmeyip yollanırsa gidiyor yoksa e-maildede hata veriyor.)

  32. web tasarım dedi ki:

    kodu tam olarak nereye yapıştaracağız.paylaşım için teşekkürler.

  33. emin dedi ki:

    PHPMailer sınıfı ile SMTP mail göndermek için “class.phpmailer.php” ve “class.smtp.php” dosyalarını alıp ve aşağıdaki kod bloğunu kullanmanız yeterli.
    demişsiniz. Bu nedemek?

    • Musa Avcı dedi ki:

      Cümleden fazladan bir “ve” kullanmışım. Şöyle olacak;

      PHPMailer sınıfı ile SMTP mail göndermek için “class.phpmailer.php” ve “class.smtp.php” dosyalarını alıp aşağıdaki kod bloğunu kullanmanız yeterli.

  34. Burak dedi ki:

    Teşekkür ederim hocam 🙂

  35. Ahmet dedi ki:

    Called Mail() without being connected

    Hatası alıyoruz üstte bir arkadaş daha yazmış ama cevap yok.

  36. Hüseyin dedi ki:

    Merhabalar, uzun süredir smtp ile gmail üzerinden (mx kayıtları yapılmış kurumsal mail) yoluyla mail gönderiyorum. Çok güzel asla spama düşmüyor, fakat benim bir sorum olacak. Şimdi ben toplu mail göndermeyi for döngüsü içerisinden teker teker smtp ile mail attırıyorum fakat bu beni çok bekletiyor veya gmail belli süre süre sonra smtp ile bağlantıyı kesebiliyor. Dolayısıyla mail listesindikelerin tamamına mail gitmiyor. Öncelikle bunu nasıl çözebilirim? Diğer sorum ben toplu mail gönder dediğim zaman bu işlem arkada devam etsin ama ben ekranımı yada bilgisayarımı kapatıp gideyim istiyorum bunu nasıl sağlayabilirim?

    • Musa Avcı dedi ki:

      işlemin sunucu tarafında “cron tab”lar ile yapılmasını sağlayabilirsiniz, bu sayede hem gönderimi parçalara ayırıp bir seferde çok fazla mail göndermemiş olursunuz, hem de arka planda devam eder.

  37. Strateji oyunu dedi ki:

    Çok yararlı paylaşım yapmışsınız hocam ellerinize sağlık.

  38. cihad kba dedi ki:

    Parmaklarına sağlık on numara bilgiler…

  39. ahmet kabalı dedi ki:

    tşk web sayfama sayenizde bu kodu ekledim

  40. Mustafa dedi ki:

    çok güzel bir açıklama olmuş hocam ama benim takıldığım konu göndereceğim adres $adres değişkeninde bunu nasıl ekleyebilirim. Bir diğer konu ise giden mailler de de değişkenler mevcut onları nasıl mail olarak gönderebilirim..

    • $mail->AddAddress(‘$adres’, ‘$ad’); şeklinde değişken yazarak dinamik bir şekilde otomatik olarak farklı kişilere mail atabilirsin

      • erman dedi ki:

        çift tırnak ile yazında değişkenler aktif olarak kullanılıyor, tek tırnak ile yazınca sadece text olarak algılıyor.

  41. Temiz, sade, güzel anlatım. Ellerinize sağlık…!

  42. Furkan dedi ki:

    Hocam çok yararlı bir yazı işimi gördü gerçekten çok teşekkürler! Tüm yazılarınız direk çözüme odaklı yazılar yazmaya devam edin biz hep okuruz 🙂

  43. Arkadaşlar aşağıdaki port ve smtp nosu ile yandex mail kullaranarak hiç hata almadan mailer kullanbilirsiniz.
    $mail->Host = “smtp.yandex.com”; //SMTP sunucusunun adresi.
    $mail->Port = 587;
    Çünkü gmail openssl istiyor ve ssl ayarınız açık değil ise hata alırsınız. Ancak yandex 587 portu her daim açık

  44. mert dedi ki:

    Hocam burada include ile class mailler.php dosyasına bağlamışsınız ama class mailler dosyası nerede ?

  45. knoxwille dedi ki:

    php.ini dosyasında ssl modülünün yüklendiğinden emin olun. Gmail ssl istiyor.

  46. seo pratik dedi ki:

    Aradığım yazı buydu local’de sıkıntı yaşıyorum ne zamandır mail gönderemiyordum ama bu yazıdan sonra işlemi tamamladım. Elinize sağlık çok faydalı bir makale olmuş.

  47. kolej club dedi ki:

    windows sunucuda sağlıklı çalışıyor sağol admin

  48. Erdem dedi ki:

    Hocam merhaba. PHP mail ile bir word dokümanı gönderiyorum, fakat aşağıda belirttiğim şekilde hata alıyorum. Yardımcı olursanız sevinirim.

    http://tinypic.com/r/2z7l6x4/5

  49. medyum dedi ki:

    Başarılı bir makale olmuş, localhost’umda denedim ve çok işime yaradı. Teşekkür ederim.

  50. knx dedi ki:

    İnput alanlarından biri boş bırakılınca ekrana hata bastırabiliyorum fakat ekran yenileniyor ve ziyaretçinin yazdıkları resetleniyor.
    Bunu engellemenin bir yolu var mıdır?

  51. knx dedi ki:

    Sanırım çözdüm. Şu an email gönderememe durumunda alanlar silinmiyor. Name / Company<input type="text" size="30" name="isim" value="">
    e-mail <input type="text" size="30" name="eposta" value="">
    Message

  52. Uğur dedi ki:

    Merhaba,

    Anlatımınız için çok teşekkür ediyorum.

    Belirttiğiniz şekilde sunucumda oluşturduğum e-mail bilgileriyle sorunsuzca mail yollayabiliyorum.
    Ancak Gmail bilgilerimi girdiğimde başarılı şekilde sonuç alamadım. Google tarafından bana “Şüpheli oturum açma girişimi önlendi” şeklinde mail geliyor. Bunu nasıl düzeltebilirim acaba?

    Teşekkür ederim.

  53. murat dedi ki:

    SMTP Error: The following recipients failed: [email protected]

    SMTP server error: SMTP AUTH is required for message submission on port 587

    böyle bir hata alıyorum. sebebi nedir aceba?

  54. ömür dedi ki:

    phpmailer den iletişim kutusuna mail yazdığındaki mail ayarlari naıl yapabiliriz?

  55. Şakir Koç dedi ki:

    $mail->CharSet = ‘UTF-8’; olarak bırakırsanız mailde türkçe karakter problemi yaşamanız muhtemel.
    $mail->CharSet = ‘iso-8859-9’;
    şeklinde değiştirirseniz probleminiz kalmayacaktır.

  56. Murat dedi ki:

    Merhaba
    Mail gönderildi diyor ve hata vermiyor ama gelen kutusunda bişey yok. gönderdiğim adres doğru. neden boyle bişey yapıyor

  57. […] PHP ile mail gönderme, htaccess, session, regex … ben de zaten bunları internetten öğrendim, peki PHP ile alakalı bir çok kaynak varken ben neden yazıyorum? Bu alanda blog tutmak isteyen, blogu olup da yazası olmayan, ya da gerçekten bu sorunun cevabını merak edenler için neden yazdığımı sizlerle paylaşmak istedim. […]

  58. Aydın dedi ki:

    Merhaba, Sorunsuz mail gönderebiliyorum. Ancak benim sorunum ek olmadığı halde bir mailin gitmesi 12 saniye sürüyor. Nasıl hızlandırabilirim? Teşekkürler.

  59. Ali Biricik dedi ki:

    gönderen isminde türkçe karakter sorunu oluşuyor , çözüm nedir acaba?

  60. dali dedi ki:

    $mail->Body = implode(” “,$_POST); ile mail gönderiyorum fakat giden maili alt alta nasıl yazarım

  61. Oguzhan dedi ki:

    Hocam.

    İletişim Formunda Doldurduğunu Mail Adresimize Pdf Formatında Gönderilmesini nasıl yaparız

  62. tuna tekin dedi ki:

    Merhaba yandex ile nasıl gönderebiliriz. Önceden çalışıyordu ancak son 2 aydır çalışmıyor. Bilginiz var mı?

  63. Nihat dedi ki:

    Merhaba,
    Acaba okundu bilgisi ya da iletildi bilgisi alabilirmiyiz.

  64. fatih tutar dedi ki:

    host kısmını localhost yaptım şifreyi de database şifremi yaptım o yuakrıda belirttiğiniz iki php dosyasını da indirdim ama şöyle bir hata aldım

    Fatal error: Class ‘SMTP’ not found in /home/bizimsit/public_html/mail/class.phpmailer.php on line 1090

  65. taylan dedi ki:

    /wp-includes/class-smtp.php on line 291
    stream_set_timeout($this->smtp_conn, $timeout, 0);

    /wp-includes/class-smtp.php on line 952
    stream_set_timeout($this->smtp_conn, $this->Timeout);

  66. taylan dedi ki:

    https://github.com/PHPMailer/PHPMailer/blob/master/class.smtp.php

    Aldığım hatalar;

    /wp-includes/class-smtp.php on line 291
    stream_set_timeout($this->smtp_conn, $timeout, 0);

    /wp-includes/class-smtp.php on line 952
    stream_set_timeout($this->smtp_conn, $this->Timeout);

  67. Muhammet dedi ki:

    Called Mail() without being connected

    Hatası alıyoruz üstte bir arkadaş daha yazmış ama cevap yok.

  68. phpmid dedi ki:

    hocam çok teşekkürler çok faydalı bir konu fakat sormak istediğim bir husus var elimde 180 kişilik mail listesi var bu kişilere ayda 5-10 kez toplu mail göndermek istiyorum spama düşme olasılığı nedir 5 dk bir gönderme olayı var bu olay eklenmeli midir ? bu konuda bilgilendirirseniz sevinirim.

    • Musa Avcı dedi ki:

      2000 kişiye kadar ücretsiz toplu mail göndermek için MailChimp servisini kullanabilirsin; http://mailchimp.com/ Bu işi kaliteli ve profesyonel olarak yapıyorlar ve mailleri inbox’a düşüyor. Fakat kesinlikle spam amaçlı mail göndermemelisin.

  69. ferhat dedi ki:

    2 haftadır PHPMailer ile mail atmaya çalışıyorum ama bir türlü olmadı. Mac OS X kullanıyorum ve bilmediğim bir sürü terminal ayarları ile oynadım tariflere göre. Sonunda problemin
    $mail->SMTPSecure = ‘ssl’; satırımda olduğunu anladım. Onu kaldırınca güvenlik olmadan mail gönderebiliyorum. Peki SSL için ücretli sertifikaya mı ihtiyacım var? Ya test için??
    Test sertifikası için bu linki denedim ama çalıştıramadım.
    http://www.akadia.com/services/ssh_test_certificate.html
    Yardım lütfen. Şifre hatırlat fonksiyonu için kullanacağım bu mail sayfasını bu yüzden SSL önemli sanırım.

  70. Umut dedi ki:

    hocam merhaba. benim bir konuda yardımınıza ihtiyacım var

    senden.php kodum bu
    <?php
    if ($_POST['apo_name']” && $_POST[‘apo_phone’]” && $_POST[‘apo_email’]” && $_POST[‘apo_betreff’]” && $_POST[‘message’]”) {

    require_once(“class.phpmailer.php”);

    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = “mail.siteadi.com”;
    $mail->SMTPAuth = true;
    $mail->Username = “[email protected]”;
    $mail->Password = “sifre”;
    $mail->From = “[email protected]”;
    $mail->Fromname = $_POST[‘apo_name’];
    $mail->AddAddress(“[email protected]”,”Kontaktieren Sie Uns Form Nachricht”);
    $mail->Subject = “Kontaktieren Sie Uns Form Nachricht”;
    $mail->Body =
    “Datum= ” . date(‘d-m-Y’) . “n” .
    “IP-Adresse= ” . $_SERVER[‘REMOTE_ADDR’] . “n” .
    “Vor- und Nachname= ” . $_POST[‘apo_name’] . “n” .
    “Telefon= ” . $_POST[‘apo_phone’] . “n” .
    “E-Mail Adresse= ” . $_POST[‘apo_email’] . “n” .
    “Betreff= ” . $_POST[‘apo_betreff’] . “n” .
    “Nachricht= ” . $_POST[‘message’];

    if(!$mail->Send())
    {
    echo ”
    alert(‘Es besteht ein Fehler! Bitte versuchen Sie es später erneut’);
    ” . $mail->ErrorInfo;
    exit;
    }
    echo ”
    alert(‘Ihre Nachricht wurde erfolgreich versendet’);
    “;
    } else {
    echo ”
    alert(‘Bitte füllen Sie dieses Pflichtfeld aus!’);
    “;
    }

    ?>
    formun bulunduğu sayfadaki form kodları da bu

    Vor-Nachname*:
    *

    Telefon:

    E-mail*:
    *

    Betreff*:

    Bild hochladen*:

    Ihre Nachricht*

     

    istiyorum ki 1mb altındaki resim dosyasını kişi bilgisayarından yükleyip gönderebilsin.

    $mail->AddAttachment(‘img/gonderilecek_resim.jpg’);
    ekleyip kullanmayı denedim. mail geldi ancak ek gelmedi

  71. Umut dedi ki:

    form kodları tam çıkmamış… resmin gönderileceği kısmın <input name resim1 olarak geçiyor

  72. Tuba dedi ki:

    Staj için başvuru formu gönderiyorum bu çıkıyor nasıl düzeltebilirim. çok acil yardımcı olabilir misiniz

    SMTP Error: Could not connect to SMTP host. Mesajınız Yollanamadı
    Mailer Error: SMTP Error: Could not connect to SMTP host.

  73. coder dedi ki:

    bu mail sistemini gmail,hotmail için değilde admine gönderme işlemi nasıl olur

  74. ynr1905 dedi ki:

    Merhaba yayınladığınız içerik çok güzel elinize sağlık, benim bir sorum olacak PHP mail ile mail gönderen kişiye bir formun bir kopyasını gitmesini nasıl sağlarız.

  75. ozgur gundogdu dedi ki:

    Arkadaşlar sunucumda php 4.7 yi kullanıyorum bu code lar da sanırım 5 veya üzeri için geçerli.. bana 4.7 ile nasıl çalıştırırım veya bunun için ayrı bir kod mu kullanmam gerekiyor..

  76. İdris KANIBOL dedi ki:

    Php 5.3 sürümü ile başladı yanlış anlamadıysam.Date sorunu var.Maili gönderdikten sonra bir hata mesajı veriyor.SMTP dosyalarından hangisinde ve nerede düzeltme yapmalıyım?

  77. kerem dedi ki:

    Merhabalar. Ben formu siteye koydum fakat mesaj gönderilemedi hatası alıyorum . mail sunucusu kısmına ne yazacağım .
    Username ve password kısmına neyin kullanıcı adını ve şifresini yazacagım .Yardımcı olabilir misiniz lütfen. Cok önemli

  78. Ali dedi ki:

    Bir sorum olacak activation link icerikli bir mail gondermek istersen ne yapmam lazim ? Yani yeni kayit yapan har uyenin mail adresine bir mail gidecek ve activasyon linkine tikladigi an uyeligi onaylansin.

  79. Sedef dedi ki:

    Selam
    Arkadaşlar konu gayet güzel anlatılmış
    Lakin benim istediğim şey şu ben bir sosyal ağ editörüyüm Platformumda Gmail gibi bir sayfa açmak istiyorum Kullanıcılarım için bir mail geldi gitti sayfası yaz gönder filan olmalı. Doğrudan posta gönder filan kolay bana gereken xxx@siteadı.com adresini benden alacak gelen mailleride bende görecek Gmail yada hotmaile girmiş gibi

  80. Nihat Baysal dedi ki:

    Smtp iletişim formunu çalışıp çalışmadığını görmek için hosta yükledim.Ancak sunucuya bağlanamadı hatası aldım.Her yolu denedim ancak olmadı.En son host firması ile görüştüm verdikleri cevap aşağıda

    Merhaba,

    Kontrol edildiğinde iletmiş olduğunuz bağlantıda bulunan iletişim formundaki fsockopen fonksiyonun sunucu üzerinde aktif olmaması sebebiyle hata aldığınız görülmektedir. İlgili fonksiyon paylaşımlı hosting servislerinde güvenlik sebebiyle aktif edilememektedir.

    İletişim formunuzda bu fonksiyonu kaldırarak düzenleme yapabilirsiniz.

    Sorun şu bu fonksiyonu nasıl kaldırabilirim

    • Musa Avcı dedi ki:

      Bu kısıtlamadan dolayı standart mail() fonksiyonunu kullanmayı deneyebilirsiniz.

      • Vlkn dedi ki:

        mail () fonksiyonu asla kullanılamıyor artık…Bence bu hiçbir çözüm getirmeyecektir…

  81. Nihat Baysal dedi ki:

    Galiba öyle olacak.

  82. Onur ÇAKAR dedi ki:

    Yazılarınızı çok faydalı buluyorum teşekkürler. epostanın ekini almak için nasıl bir yol izlemeliyiz ?

  83. Nakliyat Ambarı dedi ki:

    yazılarınızı sürekli takip ediyorum ve çok bilğilendirici buluyorum.

  84. İstanbul Ambar dedi ki:

    Admin, cidden böyle yararlı bilğileri herkes vermez eline koluna sağlık

  85. Yazılarınız gerçekten çok faydalı. Teşekkürler. Şu konuda da bilgi verirseniz sevinirim. http://www.tesakom.com adlı sitemizin kariyer sayfasındaki formu bu yöntemle nasıl gönderebilirim

  86. fikret dedi ki:

    lütfen bana bu konuda yardımcı olun ben burda yaptıklarınızı yapamadım amacım iletişim formu yapmak

  87. Ayşe dedi ki:

    hocam eline koluna sağlık, o kadar sitede çok farklı konular okudum ama içlerinde en sade ve düzgün anlatan sensin

  88. Barış dedi ki:

    Merhaba, ben bir türlü başarılı bir sonuç alamadım. Hostu kendi sitem olarak belirliyorum. Mail hostumdaki mail adreslerine geliyor ama gmail, hotmail vb mail servislerine mail göndermiyor. Sorun ne olabilir?

  89. Ayşe dedi ki:

    elinize sağlık sitemde kullanıyorum ve basarı ile gidiyor.

  90. Mert dedi ki:

    Mail cannot be sent. You need PHP server to send mail.

  91. furkan dedi ki:

    class.phpmailer.php nerden bulurum

  92. huseyin filiz dedi ki:

    Php mail içerindeki hatada yardımcı olabilirmisiniz ?

  93. Sinan dedi ki:

    SAnırım ilk satır include ‘PHPMailerAutoload.php’; şeklinde değiştirilmeli. Hata veriyor.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir