PDA

View Full Version : سوال: مشکل فارسی با nuSOAP در ارسال ایمیل



arman_Delta2002
چهارشنبه 22 آذر 1391, 18:29 عصر
سلام خدمت بچه های گل برنامه نویس

من چند روزی درگیر نوشتن یه برنامه به زبان VB.net جهت ارسال ایمیل توست سرور php هستم و همه چیش درست و کار میکنه فقط مشکلم اینه که متن فارسی که از vb به فانکشن php میفرستم و اون تابع با دستور mail ایمیل رو ارسال میکنه اما به صورت ؟؟؟؟ ؟؟؟ ؟؟؟؟ ؟؟؟ و نا خوانا

به هر دری زدم تمام کد های کلاس nuSOAP که ارتباط دهنده php به Viual stadio هست رو زیر و رو کردم هر جا رو دیدم utf-8 کردم پارامترای کد هاشو ولی نشد.
با یک تابع دیگه قبل از ارسال داده ها رو یکبار از هر فرمتی به utf برگردوندم و بعد ارسال کردم بازم نشد

خواستم صفحه ایندکس رو با کد هدر html فارسی کنم ولی سرویس دهنده nuSOAP خطا میده و نمیزاره از حالت text/html استفاده کنم کسایی که با این سرویس کار کردن میدونن که حالتش text/xml هست.
من اومدم تو کد کلاس های nuSOAP هرجا تگ xml باز میشد رو هم اینکد utf اضافه کردم ولی فقط پاسخ ارسال فارسی میاد .
جالب اینجاست که به جای پارامتری که از vb میفرستم اگه تو خود همون صفحه فارسی بنویسم فارسی ارسال میشه بدون مشکل.

کد صفحه ایندکس


<?php

require_once("nuSOAP/lib/nusoap.php");

function encodingToUtf8(&$string){
if(!is_null($string)){
mb_convert_encoding($string, "UTF-8");
$ar = iconv(mb_detect_encoding($string), "UTF-8", $string);
}
return $ar;
}


function SendMailD($to ,$subject ,$message ,$from ,$headers)
{
//$body ="<HTML dir=\"rtl\"><meta http-equiv=\"Content-Type\" CONTENT=\"text/html\"; charset=\"utf-8\"><BODY dir=\"rtl\">" . $message ."</BODY></HTML>" ;

$headers_internal .= 'Content-type: text/html; charset=utf-8' . "\r\n";

$to = "armandelta2002@gmail.com"; // Reciver Email
$subject = "امیل گژ تست"; // The Subject Of Your Mail
// $body =encodingToUtf8( $message) ;
$body = $message ;
$from = "info@whhweb.com"; // The Sender Mail
$headers = "From: $from "; // Just Write This We Complete this later
mail($to, $subject, $body, $headers);

}
$namespace = "http://eqbalpc.com/DMail";
// create a new soap server
$server = new soap_server();
// configure our WSDL
$server->configureWSDL("MailService");
$server ->defencoding = 'utf-8';
$server ->soap_defencoding = 'utf-8';
// set our namespace
$server->wsdl->schemaTargetNamespace = $namespace;

$server->register(
// method name:
'SendMailD',
// parameter list:
array('to' => 'xsd:string', 'subject' => 'xsd:string','message' => 'xsd:string', 'from' => 'xsd:string', 'headers' => 'xsd:string'),
// return value(s):
array('return'=>'xsd:string'),
// namespace:
$namespace,
// soapaction: (use default)
false,
// style: rpc or document
'rpc',
// use: encoded or literal
'literal',
// description: documentation for the method
'A simple World Mail Sender web method');

// Get our posted data if the service is being consumed
// otherwise leave this data blank.
$POST_DATA = isset($GLOBALS['HTTP_RAW_POST_DATA'])
? $GLOBALS['HTTP_RAW_POST_DATA'] : '';

// pass our posted data (or nothing) to the soap service
$server->service($POST_DATA);
exit();
?>


کمکی از دستتون بر میاد لطفا دریق نکنین بد فرم با یه asp کار کل انداختیم و الان کم اوردم :قهقهه:
اینم یه مثال ساده همراه با خود nuSOAP اگه کسی بتونه کاری کنه که فارسی رو ساپرت کنه کمک بزرگی به فارسی زبانا کرده.
96546

Unique
پنج شنبه 23 آذر 1391, 01:55 صبح
دوست عزیز راستش یکم بی ربط نوشتین و موضوعات را قاطی کردین ، با اون تیکه کدی که داره از تابع mail استفاده میکنه شما نمیتونید فارسی ارسال کنید ، مقادیرتون را به این تابع پاس بدید تا به درستی ایمیل را فارسی ارسال کنه :



function mail_utf8($to, $from_user, $from_email,$subject = '(No subject)', $message = ''){
$from_user = "=?UTF-8?B?".base64_encode($from_user)."?=";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";

$headers = "From: $from_user <$from_email>\r\n".
"MIME-Version: 1.0" . "\r\n" .
"Content-type: text/html; charset=UTF-8" . "\r\n";

return mail($to, $subject, $message, $headers);
}

reza_pnu_ney
سه شنبه 12 آذر 1392, 12:01 عصر
use this

$client=new nusoap_client($url, 'wsdl');
$client->soap_defencoding = "UTF-8";
$client->decode_utf8 = false;