Fixed the date string to comply to RFC 2822 - apparently, the timezone must not be given
as a string anymore (it's deprecated). That at least allows mmlr's internet provider to recognize mails as valid mails rather than spam. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@21764 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
parent
8d9b9d333a
commit
2ae1709efb
@ -1,4 +1,4 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2001-2004 Dr. Zoidberg Enterprises. All rights reserved.
|
* Copyright 2001-2004 Dr. Zoidberg Enterprises. All rights reserved.
|
||||||
* Copyright 2007, Haiku Inc. All Rights Reserved.
|
* Copyright 2007, Haiku Inc. All Rights Reserved.
|
||||||
*
|
*
|
||||||
@ -105,14 +105,16 @@ BEmailMessage::~BEmailMessage()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t BEmailMessage::InitCheck() const
|
status_t
|
||||||
|
BEmailMessage::InitCheck() const
|
||||||
{
|
{
|
||||||
return _status;
|
return _status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BEmailMessage *
|
BEmailMessage *
|
||||||
BEmailMessage::ReplyMessage(mail_reply_to_mode replyTo, bool accountFromMail, const char *quoteStyle)
|
BEmailMessage::ReplyMessage(mail_reply_to_mode replyTo, bool accountFromMail,
|
||||||
|
const char *quoteStyle)
|
||||||
{
|
{
|
||||||
BEmailMessage *to_return = new BEmailMessage;
|
BEmailMessage *to_return = new BEmailMessage;
|
||||||
|
|
||||||
@ -181,8 +183,10 @@ BEmailMessage::ForwardMessage(bool accountFromMail, bool includeAttachments)
|
|||||||
BString header = "------ Forwarded Message: ------\n";
|
BString header = "------ Forwarded Message: ------\n";
|
||||||
header << "To: " << To() << '\n';
|
header << "To: " << To() << '\n';
|
||||||
header << "From: " << From() << '\n';
|
header << "From: " << From() << '\n';
|
||||||
if (CC() != NULL)
|
if (CC() != NULL) {
|
||||||
header << "CC: " << CC() << '\n'; // Can use CC rather than "Cc" since display only.
|
// Can use CC rather than "Cc" since display only.
|
||||||
|
header << "CC: " << CC() << '\n';
|
||||||
|
}
|
||||||
header << "Subject: " << Subject() << '\n';
|
header << "Subject: " << Subject() << '\n';
|
||||||
header << "Date: " << Date() << "\n\n";
|
header << "Date: " << Date() << "\n\n";
|
||||||
if (_text_body != NULL)
|
if (_text_body != NULL)
|
||||||
@ -524,11 +528,16 @@ BEmailMessage::GetComponent(int32 i, bool parse_now)
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
int32 BEmailMessage::CountComponents() const {
|
|
||||||
|
int32
|
||||||
|
BEmailMessage::CountComponents() const
|
||||||
|
{
|
||||||
return _num_components;
|
return _num_components;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BEmailMessage::Attach(entry_ref *ref, bool includeAttributes)
|
|
||||||
|
void
|
||||||
|
BEmailMessage::Attach(entry_ref *ref, bool includeAttributes)
|
||||||
{
|
{
|
||||||
if (includeAttributes)
|
if (includeAttributes)
|
||||||
AddComponent(new BAttributedMailAttachment(ref));
|
AddComponent(new BAttributedMailAttachment(ref));
|
||||||
@ -536,7 +545,10 @@ void BEmailMessage::Attach(entry_ref *ref, bool includeAttributes)
|
|||||||
AddComponent(new BSimpleMailAttachment(ref));
|
AddComponent(new BSimpleMailAttachment(ref));
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BEmailMessage::IsComponentAttachment(int32 i) {
|
|
||||||
|
bool
|
||||||
|
BEmailMessage::IsComponentAttachment(int32 i)
|
||||||
|
{
|
||||||
if ((i >= _num_components) || (_num_components == 0))
|
if ((i >= _num_components) || (_num_components == 0))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@ -553,7 +565,10 @@ bool BEmailMessage::IsComponentAttachment(int32 i) {
|
|||||||
return component->IsAttachment();
|
return component->IsAttachment();
|
||||||
}
|
}
|
||||||
|
|
||||||
void BEmailMessage::SetBodyTextTo(const char *text) {
|
|
||||||
|
void
|
||||||
|
BEmailMessage::SetBodyTextTo(const char *text)
|
||||||
|
{
|
||||||
if (_text_body == NULL) {
|
if (_text_body == NULL) {
|
||||||
_text_body = new BTextMailComponent;
|
_text_body = new BTextMailComponent;
|
||||||
AddComponent(_text_body);
|
AddComponent(_text_body);
|
||||||
@ -563,7 +578,8 @@ void BEmailMessage::SetBodyTextTo(const char *text) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BTextMailComponent *BEmailMessage::Body()
|
BTextMailComponent *
|
||||||
|
BEmailMessage::Body()
|
||||||
{
|
{
|
||||||
if (_text_body == NULL)
|
if (_text_body == NULL)
|
||||||
_text_body = RetrieveTextBody(_body);
|
_text_body = RetrieveTextBody(_body);
|
||||||
@ -572,7 +588,9 @@ BTextMailComponent *BEmailMessage::Body()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const char *BEmailMessage::BodyText() {
|
const char *
|
||||||
|
BEmailMessage::BodyText()
|
||||||
|
{
|
||||||
if (Body() == NULL)
|
if (Body() == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
@ -580,7 +598,9 @@ const char *BEmailMessage::BodyText() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
status_t BEmailMessage::SetBody(BTextMailComponent *body) {
|
status_t
|
||||||
|
BEmailMessage::SetBody(BTextMailComponent *body)
|
||||||
|
{
|
||||||
if (_text_body != NULL) {
|
if (_text_body != NULL) {
|
||||||
return B_ERROR;
|
return B_ERROR;
|
||||||
// removing doesn't exist for now
|
// removing doesn't exist for now
|
||||||
@ -594,20 +614,21 @@ status_t BEmailMessage::SetBody(BTextMailComponent *body) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
BTextMailComponent *BEmailMessage::RetrieveTextBody(BMailComponent *component)
|
BTextMailComponent *
|
||||||
|
BEmailMessage::RetrieveTextBody(BMailComponent *component)
|
||||||
{
|
{
|
||||||
BTextMailComponent *body = dynamic_cast<BTextMailComponent *>(component);
|
BTextMailComponent *body = dynamic_cast<BTextMailComponent *>(component);
|
||||||
if (body != NULL)
|
if (body != NULL)
|
||||||
return body;
|
return body;
|
||||||
|
|
||||||
BMIMEMultipartMailContainer *container = dynamic_cast<BMIMEMultipartMailContainer *>(component);
|
BMIMEMultipartMailContainer *container
|
||||||
|
= dynamic_cast<BMIMEMultipartMailContainer *>(component);
|
||||||
if (container != NULL) {
|
if (container != NULL) {
|
||||||
for (int32 i = 0; i < container->CountComponents(); i++) {
|
for (int32 i = 0; i < container->CountComponents(); i++) {
|
||||||
if ((component = container->GetComponent(i)) == NULL)
|
if ((component = container->GetComponent(i)) == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
switch (component->ComponentType())
|
switch (component->ComponentType()) {
|
||||||
{
|
|
||||||
case B_MAIL_PLAIN_TEXT_BODY:
|
case B_MAIL_PLAIN_TEXT_BODY:
|
||||||
// AttributedAttachment returns the MIME type of its contents, so
|
// AttributedAttachment returns the MIME type of its contents, so
|
||||||
// we have to use dynamic_cast here
|
// we have to use dynamic_cast here
|
||||||
@ -691,8 +712,10 @@ BEmailMessage::RenderToRFC822(BPositionIO *file)
|
|||||||
|
|
||||||
// Do real rendering
|
// Do real rendering
|
||||||
|
|
||||||
if (From() == NULL)
|
if (From() == NULL) {
|
||||||
SendViaAccount(_chain_id); //-----Set the from string
|
// set the "From:" string
|
||||||
|
SendViaAccount(_chain_id);
|
||||||
|
}
|
||||||
|
|
||||||
BList recipientList;
|
BList recipientList;
|
||||||
get_address_list(recipientList, To(), extract_address);
|
get_address_list(recipientList, To(), extract_address);
|
||||||
@ -717,15 +740,19 @@ BEmailMessage::RenderToRFC822(BPositionIO *file)
|
|||||||
struct tm tm;
|
struct tm tm;
|
||||||
localtime_r(&creationTime, &tm);
|
localtime_r(&creationTime, &tm);
|
||||||
|
|
||||||
strftime(date, 128, "%a, %d %b %Y %H:%M:%S",&tm);
|
size_t length = strftime(date, sizeof(date),
|
||||||
|
"%a, %d %b %Y %H:%M:%S", &tm);
|
||||||
|
|
||||||
// GMT offsets are full hours, yes, but you never know :-)
|
// GMT offsets are full hours, yes, but you never know :-)
|
||||||
if (tm.tm_gmtoff)
|
if (tm.tm_gmtoff) {
|
||||||
sprintf(date + strlen(date)," %+03d%02d",tm.tm_gmtoff / 3600,(tm.tm_gmtoff / 60) % 60);
|
#ifndef HAIKU_TARGET_PLATFORM_BEOS
|
||||||
|
snprintf(date + length, sizeof(date) - length, " %+03d%02d",
|
||||||
uint32 length = strlen(date);
|
tm.tm_gmtoff / 3600, (tm.tm_gmtoff / 60) % 60);
|
||||||
if (length < sizeof(date) - 5)
|
#else
|
||||||
strftime(date + length, length - sizeof(date), " %Z", &tm);
|
sprintf(date + length, " %+03d%02d",
|
||||||
|
tm.tm_gmtoff / 3600, (tm.tm_gmtoff / 60) % 60);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
SetHeaderField("Date", date);
|
SetHeaderField("Date", date);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user