WordPress wp_mail nasıl kullanılır?

Fragger

Kilopat
Katılım
4 Kasım 2017
Mesajlar
659
Çözümler
4
Yer
İstanbul
Daha fazla  
Sistem Özellikleri
Ekran Kartı: Geforce RTX 4060 Ti
Anakart: Asus Prime B550M-K
İşlemci: Ryzen 5 5600
RAM: GSKILL 8GB RIPJAWS V 2x8
SSD: Samsung 980 Pro 2TB
SSD2 : GOODRAM 512GB
Monitör: Dell E2417H
Sıvı Soğutma: PowerBoost NOBLE 120 Rainbow
PSU: FSP 650W
Cinsiyet
Erkek
Meslek
Finans
Merhabalar,

Bir WP sitemiz var. Şu anda her şey aktif olarak çalışmaktadır. Bir müşteri formu doldurduğunda arka planda farklı bir sitede API'lerle sorunsuz bir şekilde müşteri datasını oluşturmaktadır. Benim isteğim ise bu çalışan forma dosya yükleme seçeneklerinden seçilen dosyaların mail olarak gelmesi. Bu form doldurulduğunda normalde olduğu gibi yine arka planda farklı bir sitede müşteri kaydını oluşturmaya devam edip aynı anda o formdaki bilgileri ve yüklenen dosyaları belirlediğimiz mail adresine göndermesi. Bunu wp_mail kodlarıyla yapılabileceğini gördüm ama pek anlamadım.

Form şöyle:

2958361862.png


Form-controller.php aşağıdaki gibidir:

PHP:
<?php

if(!isset($_SESSION))
{
 session_start();
}
$formErr = null;

function getToken($email,$password){
 $curl = curl_init();
 curl_setopt_array($curl, array(
 CURLOPT_URL => "https://***/api/getToken",
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_ENCODING => "",
 CURLOPT_MAXREDIRS => 10,
 CURLOPT_TIMEOUT => 0,
 CURLOPT_FOLLOWLOCATION => true,
 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
 CURLOPT_CUSTOMREQUEST => "POST",
 CURLOPT_POSTFIELDS => array('email' => $email,'password' => $password),
 ));

 $response = curl_exec($curl);

 curl_close($curl);
 $response = json_decode($response,true);
 if($response["status"]=="incorrect"){
 return "token_error";
 }else if($response["status"]=="correct"){
 return $response["token"];
 }

}

function addLead($token,$name,$email,$phone,$phoneCode,$refer,$source,$campaign,$medium){

 $curl = curl_init();

 curl_setopt_array($curl, array(
 CURLOPT_URL => "https://***/api/customer/create",
 CURLOPT_RETURNTRANSFER => true,
 CURLOPT_ENCODING => "",
 CURLOPT_MAXREDIRS => 10,
 CURLOPT_TIMEOUT => 0,
 CURLOPT_FOLLOWLOCATION => true,
 CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
 CURLOPT_CUSTOMREQUEST => "POST",
 CURLOPT_POSTFIELDS => array(
 'token' => $token,
 'name' => $name,
 'email' => $email,
 'phone' => $phone,
 'phone_code' => $phoneCode,
 'refer' => $refer,
 'utm_source' => $source,
 'utm_campaign' => $campaign,
 'utm_medium' => $medium
 ),
 ));

 $response = curl_exec($curl);

 curl_close($curl);
 return $response;
}

if (!empty($_POST['token']) and $_SESSION['token']!=null ) {

 if (hash_equals($_SESSION['token'], $_POST['token'])) {
 //print "token:ok\n";
 $_SESSION['token']=null;
 $refer = isset($_POST['refer']) ? $_POST['refer'] : "";

 $token = getToken('api@***','***');
 if ($token === "token_error") { //token hatalı mı ?
 $formErr = "Şu anda işleminizi gerçekleştiremiyoruz. Lütfen daha sonra tekrar deneyiniz.";
 } else {
 if (empty($_POST['name'])) {
 $formErr = "Lütfen isim alanını doldurunuz";
 } else {

 $name = $_POST['name']; //name atama.
 if (empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
 $formErr = "Lütfen geçerli bir email adresi giriniz";
 } else {

 $email = $_POST['email']; //email atama.
 if (empty($_POST['phone']) ) {
 $formErr = "Lütfen telefon alanını doldurunuz";
 } else {

 $phone = "90".str_replace(' ', '', $_POST["phone"]);
 $utm_source = isset($_SESSION["utm_source"]) ? $_SESSION["utm_source"] : "";
 $utm_campaign = isset($_SESSION["utm_campaign"]) ? $_SESSION["utm_campaign"] : "";
 $utm_medium = isset($_SESSION["utm_medium"]) ? $_SESSION["utm_medium"] : "";
 if(addLead($token,$name,$email,$phone,"90",$refer,$utm_source,$utm_campaign,$utm_medium)){
 //print_r($_POST);
 print true;
 //print header("Location: https://" . $_SERVER['HTTP_HOST'] . "/tesekkurler.html");
 }else{
 $formErr = "Şu anda işleminizi gerçekleştiremiyoruz. Lütfen daha sonra tekrar deneyiniz.";

 }

 //create_lead($token,$email,$name, $phone, $phoneCode,1,$refer,$refUrl,$utm_source ,$utm_campaign,$utm_medium);
 }
 }
 }
 }
 } else {
 $formErr = "Oturum süreniz dolmuş lütfen sayfayı yenileyip tekrar deneyiniz.";
 }
}else {
 $formErr = "Oturum süreniz dolmuş lütfen sayfayı yenileyip tekrar deneyiniz.";
}

if($formErr){
 $_SESSION["formErr"] = $formErr;
 print($formErr);
 //header('Location: ' . $_SERVER['HTTP_REFERER']);
}

?>
 
@Fragger attığın kodda 63 ile 64 arasında CRM'ine kaydı ekledikten sonra mail işlemine başlaman gerek. Aşağıdaki gibi de file attach etmen gerek;

PHP:
mail->addAttachment($_FILES['input_name']['tmp_name'],'application/octet-stream');
 
Son düzenleme:
@Fragger attığın kodda 63 ile 64 arasında crm'ine kaydı ekledikten sonra mail işlemine başlaman gerek. Aşağıdaki gibi de file attach etmen gerek;

PHP:
mail->addAttachment($FILES['input_name']['tmp_name'],'application/octet-stream');

Hocam Crm'i ben yazmadım, yazan şirket desteğini çekmiş. Ben de elimden geldikçe destek vermeye çalışıyorum.

Teşekkürler, deneyip duruma göre tekrar gelirim.
@Fragger attığın kodda 63 ile 64 arasında crm'ine kaydı ekledikten sonra mail işlemine başlaman gerek. Aşağıdaki gibi de file attach etmen gerek;

PHP:
mail->addAttachment($_FILES['input_name']['tmp_name'],'application/octet-stream');

Hocam maalesef yapamadım. Sana zahmet şu koda ekleyip bana paylaşabilir misin acaba?

PHP:
<?php

if(!isset($_SESSION))
{
session_start();
}
$formErr = null;

function getToken($email,$password){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://***/api/getToken",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array('email' => $email,'password' => $password),
));

$response = curl_exec($curl);

curl_close($curl);
$response = json_decode($response,true);
if($response["status"]=="incorrect"){
return "token_error";
}else if($response["status"]=="correct"){
return $response["token"];
}

}

function addLead($token,$name,$email,$phone,$phoneCode,$refer,$source,$campaign,$medium){

$curl = curl_init();

curl_setopt_array($curl, array(
CURLOPT_URL => "https://***/api/customer/create",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => array(
'token' => $token,
'name' => $name,
'email' => $email,
'phone' => $phone,
'phone_code' => $phoneCode,
'refer' => $refer,
'utm_source' => $source,
'utm_campaign' => $campaign,
'utm_medium' => $medium
),
));

$response = curl_exec($curl);

curl_close($curl);
return $response;
}

if (!empty($_POST['token']) and $_SESSION['token']!=null ) {

if (hash_equals($_SESSION['token'], $_POST['token'])) {
//print "token:ok\n";
$_SESSION['token']=null;
$refer = isset($_POST['refer']) ? $_POST['refer'] : "";

$token = getToken('api@***','***');
if ($token === "token_error") { //token hatalı mı ?
$formErr = "Şu anda işleminizi gerçekleştiremiyoruz. Lütfen daha sonra tekrar deneyiniz.";
} else {
if (empty($_POST['name'])) {
$formErr = "Lütfen isim alanını doldurunuz";
} else {

$name = $_POST['name']; //name atama.
if (empty($_POST['email']) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
$formErr = "Lütfen geçerli bir email adresi giriniz";
} else {

$email = $_POST['email']; //email atama.
if (empty($_POST['phone']) ) {
$formErr = "Lütfen telefon alanını doldurunuz";
} else {

$phone = "90".str_replace(' ', '', $_POST["phone"]);
$utm_source = isset($_SESSION["utm_source"]) ? $_SESSION["utm_source"] : "";
$utm_campaign = isset($_SESSION["utm_campaign"]) ? $_SESSION["utm_campaign"] : "";
$utm_medium = isset($_SESSION["utm_medium"]) ? $_SESSION["utm_medium"] : "";
if(addLead($token,$name,$email,$phone,"90",$refer,$utm_source,$utm_campaign,$utm_medium)){
//print_r($_POST);
print true;
//print header("Location: https://" . $_SERVER['HTTP_HOST'] . "/tesekkurler.html");
}else{
$formErr = "Şu anda işleminizi gerçekleştiremiyoruz. Lütfen daha sonra tekrar deneyiniz.";

}

//create_lead($token,$email,$name, $phone, $phoneCode,1,$refer,$refUrl,$utm_source ,$utm_campaign,$utm_medium);
}
}
}
}
} else {
$formErr = "Oturum süreniz dolmuş lütfen sayfayı yenileyip tekrar deneyiniz.";
}
}else {
$formErr = "Oturum süreniz dolmuş lütfen sayfayı yenileyip tekrar deneyiniz.";
}

if($formErr){
$_SESSION["formErr"] = $formErr;
print($formErr);
//header('Location: ' . $_SERVER['HTTP_REFERER']);
}

?>
 
Son düzenleme:
@Fragger dosya aşağıda;


Bunun çalışması için mail gönderecek mail adresinin SMTP bilgileri gerekli. Ayrıca HTML formdaki dosya inputunun name parametresi de ilgili alana yazılmalı.

Bir de konu başında geçen SMTP mail konumdaki kütüphaneyi doğru dizine koyman gerek.
 
@Fragger dosya aşağıda;


Bunun çalışması için mail gönderecek mail adresinin smtp bilgileri gerekli. Ayrıca HTML formdaki dosya inputunun name parametresi de ilgili alana yazılmalı.

Bir de konu başında geçen smtp mail konumdaki kütüphaneyi doğru dizine koyman gerek.

Hocam bir süredir iş yoğunluğundan dolayı giremedim. Teşekkür ederim, sorun çözüldü.
@Berkay Davas hocam bir yanlışlık ile çözüldüğünü sandım fakat çözülmemiş. Crm'e müşteri kayıdını yine normal şekilde yapıyor fakat mail göndermiyor.

1646013963697.png


1646013837256.png


1646013882188.png


1646013853445.png




Smtp kütüphanesini doğru yere koydum. SMTP bilgileri doğru ve normalde çalışıyor. HTML formundaki input file Name'sini doğru yazdım. Konuyla ilgili tekrar yardımcı olabilir misin?
 

Dosya Ekleri

  • 1646013969418.png
    1646013969418.png
    6 KB · Görüntüleme: 26
Son düzenleme:

Technopat Haberler

Geri
Yukarı