diff options
author | James Cook <james@lindenlab.com> | 2007-02-15 20:24:08 +0000 |
---|---|---|
committer | James Cook <james@lindenlab.com> | 2007-02-15 20:24:08 +0000 |
commit | 12ac04231b8d358e70c830f7958f7efbc0f7c0d1 (patch) | |
tree | 189b9bc4e3bfa63275cc41be8dc42a28b0f54ffe /indra/llmessage/llmail.h | |
parent | 4feabe4a9caec380cad405d5410bc762c862113d (diff) |
merge -r 57761:57967 im-email-session-3, removes database load from IM to email session tracking, introduces new format for email return addresses
Diffstat (limited to 'indra/llmessage/llmail.h')
-rw-r--r-- | indra/llmessage/llmail.h | 119 |
1 files changed, 74 insertions, 45 deletions
diff --git a/indra/llmessage/llmail.h b/indra/llmessage/llmail.h index af02264776..dc642b96d5 100644 --- a/indra/llmessage/llmail.h +++ b/indra/llmessage/llmail.h @@ -11,55 +11,84 @@ typedef struct apr_pool_t apr_pool_t; -// if hostname is NULL, then the host is resolved as 'mail' -void init_mail(const std::string& hostname, apr_pool_t* pool); +class LLUUID; -// Allow all email transmission to be disabled/enabled. -void enable_mail(bool mail_enabled); +class LLMail +{ +public: + // if hostname is NULL, then the host is resolved as 'mail' + static void init(const std::string& hostname, apr_pool_t* pool); -// returns TRUE if the call succeeds, FALSE otherwise. -// -// Results in: -// From: "from_name" <from_address> -// To: "to_name" <to_address> -// Subject: subject -// message -BOOL send_mail(const char* from_name, const char* from_address, - const char* to_name, const char* to_address, - const char* subject, const char* message); + // Allow all email transmission to be disabled/enabled. + static void enable(bool mail_enabled); -/** - * @brief build the complete smtp transaction & header for use in an - * mail. - * - * @param from_name The name of the email sender - * @param from_address The email address for the sender - * @param to_name The name of the email recipient - * @param to_name The email recipient address - * @param subject The subject of the email - * @return Returns the complete SMTP transaction mail header. - */ -std::string build_smtp_transaction( - const char* from_name, - const char* from_address, - const char* to_name, - const char* to_address, - const char* subject); + // returns TRUE if the call succeeds, FALSE otherwise. + // + // Results in: + // From: "from_name" <from_address> + // To: "to_name" <to_address> + // Subject: subject + // message + static BOOL send(const char* from_name, const char* from_address, + const char* to_name, const char* to_address, + const char* subject, const char* message); -/** - * @brief send an email with header and body. - * - * @param header The email header. Use build_mail_header(). - * @param message The unescaped email message. - * @param from_address Used for debugging - * @param to_address Used for debugging - * @return Returns true if the message could be sent. - */ -bool send_mail( - const std::string& header, - const std::string& message, - const char* from_address, - const char* to_address); + /** + * @brief build the complete smtp transaction & header for use in an + * mail. + * + * @param from_name The name of the email sender + * @param from_address The email address for the sender + * @param to_name The name of the email recipient + * @param to_name The email recipient address + * @param subject The subject of the email + * @return Returns the complete SMTP transaction mail header. + */ + static std::string buildSMTPTransaction( + const char* from_name, + const char* from_address, + const char* to_name, + const char* to_address, + const char* subject); + + /** + * @brief send an email with header and body. + * + * @param header The email header. Use build_mail_header(). + * @param message The unescaped email message. + * @param from_address Used for debugging + * @param to_address Used for debugging + * @return Returns true if the message could be sent. + */ + static bool send( + const std::string& header, + const std::string& message, + const char* from_address, + const char* to_address); + + // IM-to-email sessions use a "session id" based on an encrypted + // combination of from agent_id, to agent_id, and timestamp. When + // a user replies to an email we use the from_id to determine the + // sender's name and the to_id to route the message. The address + // is encrypted to prevent users from building addresses to spoof + // IMs from other users. The timestamps allow the "sessions" to + // expire, in case one of the sessions is stolen/hijacked. + // + // indra/tools/mailglue is responsible for parsing the inbound mail. + // + // secret: binary blob passed to blowfish, max length 56 bytes + // secret_size: length of blob, in bytes + // + // Returns: "base64" encoded email local-part, with _ and - as the + // non-alphanumeric characters. This allows better compatibility + // with email systems than the default / and + extra chars. JC + static std::string encryptIMEmailAddress( + const LLUUID& from_agent_id, + const LLUUID& to_agent_id, + U32 time, + const U8* secret, + size_t secret_size); +}; extern const size_t LL_MAX_KNOWN_GOOD_MAIL_SIZE; |