Я предлагаю поместить фактические значения конфигурации в поле в структуре Config
, которая мутирует под блокировкой, а не мутировать указатель Config
, потому что при встрече с вызывающими методами метод все равно будет иметь ссылку на старый указатель.
Например:
type Config struct {
values map[string]interface{} // or whatever is appropriate for your config
lock sync.RWMutex
}
func (c *Config) Get(k string) (interface{}, bool) {
c.lock.RLock()
defer c.lock.RUnlock()
v, ok := c.values[k]
return v, ok
}
func (c *Config) Reload(path string) error {
newConfig, err := LoadFromFile(path)
if err != nil {
return err
}
c.lock.Lock()
defer c.lock.Unlock()
c.values = newConfig.values
return nil
}
Я нашел краткое руководство по, как рассматривать электронные письма с PHP: здесь.
У основания той страницы существует тело вложения echo
:
if (substr($ContentType,0,4) == "text") {
echo imap_qprint($fileContent);
} else {
echo imap_base64($fileContent);
}
Я предполагаю, что это - то, в чем Вы, возможно, нуждались бы...
(редактирование: в Вашем случае, если это всегда - изображение, можно пропустить if
часть. И конечно, сохраните файл вместо того, чтобы повторить его:)
можно использовать imap_base64
функционируйте и просто вывод это в файл или использование imap_savebody
Данные MIME основные 64 закодированных, таким образом, я думаю, что необходимо смочь декодировать их с помощью base64_decode
Платформа зенда содержит Zend_Mail, который должен сделать сообщения электронной почты чтения намного легче, и Zend_Mime, которому я верю, может проанализировать многослойное сообщение пантомимы в разумную структуру данных.