diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index 3a6408f5a..b41ba319d 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -6180,6 +6180,8 @@ Item* Player::_LoadMailedItem(ObjectGuid const& playerGuid, Player* player, uint void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mailItemsResult) { + time_t cur_time = GameTime::GetGameTime().count(); + m_mail.clear(); std::unordered_map mailById; @@ -6205,6 +6207,12 @@ void Player::_LoadMail(PreparedQueryResult mailsResult, PreparedQueryResult mail m->stationery = fields[11].Get(); m->mailTemplateId = fields[12].Get(); + if (cur_time > m->expire_time) + { + LOG_DEBUG("entities.player", "Player::_LoadMail: Mail ({}) has expired - ignored.", m->messageID); + continue; + } + if (m->mailTemplateId && !sMailTemplateStore.LookupEntry(m->mailTemplateId)) { LOG_ERROR("entities.player", "Player::_LoadMail: Mail ({}) has nonexistent MailTemplateId ({}), remove at load", m->messageID, m->mailTemplateId);