לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 04-07-2007, 15:36
  shuraki shuraki אינו מחובר  
 
חבר מתאריך: 10.10.04
הודעות: 224
קידוד, טופס, עברית, UTF-8

שלום,
אני יודע ששאלו את הנושאים הללו אלף פעם, אבל בחיי שעשיתי חיפוש בפורום ועדיין לא מצאתי תשובה...

בניתי טפסים, שמתי בכותר את הקידוד המתאים לבסיס הנתונים (מקודד ל UTF-8),
וכשאני שולח מייל, גוף המייל מגיע מצויין, אבל משום מה, הנושא ולפעמים כתובת המייל
מתחרבשים לי ומופיעים ריבועים כל ארבע-חמש אותיות.
(כאן למשל אמור להיות "דיווח על שגיאה באתר הברכות הישראלי")

תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

זה מריח כמו בעיית קידוד עבור המשתנים שבכותר, אבל שיחקתי עם זה ולא הצלחתי.

הנה הקוד שלי:
קוד PHP:
 $subject_mail="דיווח על שגיאה באתר הברכות הישראלי";
$headers ="Content-Type: text/html; charset=utf-8 \n";
$headers .="X-PHP-Mail-Priority: Normal\r\n";
$headers .="X-Priority: 3\r\n";
$headers .="from: $from1 \r\n";
 
$main="
<html>
<head>
<META http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">
</HEAD>
...
...
</html>"
;
 
$statusmail($email,$subject_mail,$main,$headers); 


אם תרצו, נסו לשלוח לעצמכם (בשליחה מהירה) מייל ותראו איך הוא מגיע.
שיניתי את הנושא לאנגלית, אבל תראו שכתובת המייל, למשל, מגיעה בג'יבריש

אם יש לאל ידכם לעזור, אודה לכם מאוד!

תודה!
_____________________________________
היו שלום, ותודה על הדגים
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.washingtontrout.org/Vashon/Vashon2001/Icons/Fish.gif]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #7  
ישן 08-07-2007, 22:35
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 6 שנכתבה על ידי shuraki שמתחילה ב "לא מצליח לי..."

אוקי, קודם אתחיל בזה שכל דבר אצלך חייב להיות מקודד ב-UTF-8.
אם זה מידע המגיע ממסד הנתונים, או מידע המגיע דרך POST או GET או במתודה אחרת.
גם את הקובץ עצמו יש לשמור בקידוד UTF-8 (ושמתי לב שידעת על זה לפני...).

לקחתי את הקוד שהצגת בהודעה הראשונה והוספתי לו כמה דברים:

קוד PHP:
<?php

$encoding 
'utf-8';
header('Content-type: text/html; charset='.$encoding);
mb_detect_order($encoding);
mb_internal_encoding($encoding);
mb_language('uni');

$subject_mail="דיווח על שגיאה באתר הברכות הישראלי";
$headers ="Content-Type: text/html; charset=utf-8 \n";
$headers .="X-PHP-Mail-Priority: Normal\r\n";
$headers .="X-Priority: 3\r\n";
$headers .="from: $from1 \r\n";

$main='
<html>
<head>
<META http-equiv="Content-Type" content="text/html; charset='
.$encoding.'">
</HEAD>
...
...
</html>'
;

$subject_mail mb_convert_encoding($subject_mail$encoding);    # Pay attention to this function.
$headers mb_convert_encoding($headers$encoding);
$main mb_convert_encoding($main$encoding);
 
$statusmail($email,$subject_mail,$main,$headers);  

?>


מקוה שזה יעבוד טוב, עוד לא ניסיתי את זה וגם אף פעם לא התעסקתי בפונקציות mbString בשליחת אימייל. אם היה לי יותר זמן כנראה גם היתי בודק...

בנוסף בעמוד הבא:
http://il2.php.net/manual/en/function.mb-send-mail.php
יש דוגמא לשליחת אימייל בקידוד utf-8 בתגובה האחרונה...דוגמא צנועה אבל כנראה זה עובד טוב.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 17-07-2007, 00:45
  shuraki shuraki אינו מחובר  
 
חבר מתאריך: 10.10.04
הודעות: 224
עדיין יש לי כמה שליחות שלא עובדות.
בתגובה להודעה מספר 13 שנכתבה על ידי DCD שמתחילה ב "כן, אני ממליץ להשאיר כל עוד..."

בשליחות של טפסים שממלאים בהם טקסט, הפתרון עובד מצויין.

הבעייה היא כאשר אני רוצה לשלוח מייל בפורמט של HTML.
במקרה כזה, אם אני משתמש בפונקציות מולטי-בייט, המייל מגיע עם התגיות עצמם בתוכן המייל.
כלומר, בדוגמא לעיל, יופיע המשתנה "main$" בדיוק כפי שהוא כולל כל תגיות ה HTML בגוף המייל.

ניסיתי לשחק עם המשתנה ולהמיר אותו כך -
קוד PHP:
 $main chunk_split(base64_encode($main)); 

אבל זה לא עזר.

ראיתי התייחסות לזה כאן (אולי זה באג?) אבל לא בטוח שזה עונה. במיוחד שיש לי באתר שלי גירסה 5+

תודה!

אגב - בקשר לתגית - mysql_query("SET NAMES utf8;");
ציטוט:
כן, אני ממליץ להשאיר כל עוד זה לא עושה לך בעיות כלשהן
לא החזרתי את זה כי זה עשה לי בעיות. (הפך את הטקסט לסימני שאלה).
_____________________________________
היו שלום, ותודה על הדגים
[התמונה הבאה מגיעה מקישור שלא מתחיל ב https ולכן לא הוטמעה בדף כדי לשמור על https תקין: http://www.washingtontrout.org/Vashon/Vashon2001/Icons/Fish.gif]

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #17  
ישן 17-07-2007, 13:36
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
בתגובה להודעה מספר 16 שנכתבה על ידי shuraki שמתחילה ב "השתמשתי ב - mb_send_mail"

כנראה זה לא קולט את הכותר כמו שצריך.

שים לב מה נכתב על פונקצית mail:
http://il.php.net/manual/en/function.mail.php
( פונקצית mb_send_mail מתבססת על פונקצית mail כמובן)

עשיתי כמה שינויים קטנים בקוד של שליחת המייל, תעתיק אותו ותנסה להפעיל לראות אם הוא עובד כמו שצריך:

קוד PHP:
 $encoding 'utf-8'
header('Content-type: text/html; charset='.$encoding); 
mb_detect_order($encoding); 
mb_internal_encoding($encoding); 
mb_language('uni'); 

$subject_mail='דיווח על שגיאה באתר הברכות הישראלי'
$headers =    'MIME-Version: 1.0\r\n'.
    
'Content-type: text/html; charset='.$encoding.'\r\n'.
    
'X-PHP-Mail-Priority: Normal\r\n'
    
'X-Priority: 3\r\n'.
    
'From: '.$from1.'\r\n'

$main=
<html> 
<head> 
<META http-equiv="Content-Type" content="text/html; charset='
.$encoding.'"> 
</HEAD> 
... 
... 
</html>'


$subject_mail mb_convert_encoding($subject_mail$encoding);    # Pay attention to this function. 
$headers mb_convert_encoding($headers$encoding); 
$main mb_convert_encoding($main$encoding); 
$email mb_convert_encoding($email$encoding); 
  
$statusmb_send_mail($email,$subject_mail,$main,$headers); 

אם זה לא עובד, כנס לעמוד הבא:
http://il.php.net/manual/en/function.mb-send-mail.php
ותסתכל בתגובה האחרונה למטה בעמוד.
יש שם את ההצעה הבאה:
קוד PHP:
 $body chunk_split(base64_encode("International characters")); 

כלומר שינוי ה- $body ששם ה-HTML.

ואם בכל זאת לא עובד, נסה להשתמש ב- Mail_Mime:
http://pear.php.net/package/Mail_Mime
כך מציעים php.net כשמנסים לשלוח טקסט HTML.

נערך לאחרונה ע"י DCD בתאריך 17-07-2007 בשעה 13:41.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #20  
ישן 28-07-2007, 16:31
  magic_shimon magic_shimon אינו מחובר  
 
חבר מתאריך: 27.07.07
הודעות: 10
את הכותרת ואת המאת צריך לקודד ב קידוד MIME
בתגובה להודעה מספר 19 שנכתבה על ידי shuraki שמתחילה ב "חיובי, הקבצים שמורים כ UTF-8"

את הכותרת ואת המאת צריך לקודד ב קידוד MIME
למה שלא תשתמש ב http://phpmailer.sourceforge.net/

http://en.wikipedia.org/wiki/MIME





MIME Encoded-Word


Since RFC 2822, message header names and values are always ASCII characters; values that contain non-ASCII data must use the MIME encoded-word syntax (RFC 2047) instead of a literal string. This syntax uses a string of ASCII characters indicating both the original character encoding (the "charset") and the content-transfer-encoding used to map the bytes of the charset into ASCII characters.

The form is: "=?charset?encoding?encoded text?=".




  • charset may be any character set registered with IANA. Typically it would be the same charset as the message body.
  • encoding can be either "Q" denoting Q-encoding that is similar to the quoted-printable encoding, or "B" denoting base64 encoding.
  • encoded text is the Q-encoded or base64-encoded text.


Difference between Q-encoding and quoted-printable



The ASCII codes for the question mark (?) and equals sign may not be represented directly as they are used to delimit the encoded-word. The ASCII code for space may not be represented directly because it could cause older parsers to split up the encoded word undesirably. To make the encoding smaller and easier to read the underscore is used to represent the ASCII code for space creating the side effect that underscore cannot be represented directly. Use of encoded words in certain parts of headers imposes further restrictions on which characters may be represented directly.

For example,

Subject: =?utf-8?Q?=C2=A1Hola,_se=C3=B1or!?=

is interpreted as "Subject: &iexcl;Hola, se&ntilde;or!".

The encoded-word format is not used for the names of the headers (for example Subject). These header names are always in English in the raw message. When viewing a message with a non-English e-mail client, the header names are usually translated by the client.



תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 20:42

הדף נוצר ב 0.06 שניות עם 11 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר